BottomNavigationView在滚动时隐藏,但在更改片段时不显示

问题描述 投票:1回答:1

我有一个BottomNavigationView,它在视图滚动到底部时隐藏,并在滚动到顶部时返回。

我的问题是当BottomNavigationView被隐藏并且我更改了片段时我无法在屏幕上显示BottomNavigationView,任何帮助都是可以理解的。

下面是我的DashboardActivity.kt代码

<android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:fitsSystemWindows="true"
        app:elevation="2dp">

    <include layout="@layout/toolbar"/>

</android.support.design.widget.AppBarLayout>

<FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

<android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="0dp"
        android:layout_marginStart="0dp"
        android:layout_gravity="bottom"
        app:labelVisibilityMode="selected"
        app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
        app:itemIconTint="@android:color/white"
        app:itemTextColor="@android:color/white"
        android:background="@color/colorAccent"
        app:itemBackground="@color/colorAccent"
        app:menu="@menu/navigation"/>

任何帮助都很明显

提前致谢

编辑#1

DashboardActivity.kt

    class DashboardActivity : BaseActivity(), EditProfileFragment.RefreshView, AddPatientFragment.NavigateView {

    override fun navigateView() {
        toDashboard()
    }

    override fun refreshView() {

        val f: Fragment? = supportFragmentManager.findFragmentById(R.id.frame_container)
        if (f != null && f is ProfileFragment) {
            f.refreshView()
            supportActionBar?.title = PROFILE

        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_dashboard)

        initializeToolBar()

        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)

        toDashboard()
    }

    /**
     * Initialization of ToolBar
     */
    private fun initializeToolBar() {

        val toolbar: Toolbar = findViewById(R.id.toolbar)
        setSupportActionBar(toolbar)

        if (supportActionBar != null) {
            supportActionBar!!.setDisplayShowHomeEnabled(true)
            supportActionBar!!.setDisplayHomeAsUpEnabled(true)
        }
    }

    private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
        when (item.itemId) {
            R.id.navigation_home -> {
                toDashboard()
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_medicine -> {
                toMedicines()
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_add_patient -> {
                toAddPatient()
                return@OnNavigationItemSelectedListener true
            }

            R.id.navigation_profile -> {
                toProfile()
                return@OnNavigationItemSelectedListener true
            }
        }
        false
    }

    private fun toProfile() {
        toggleToolBar(false)
//        navigation.selectedItemId = R.id.navigation_profile
        navigation.labelVisibilityMode = View.VISIBLE
        replaceFragment(ProfileFragment::class.java, PROFILE, false, null, R.id.frame_container)
    }

    private fun toAddPatient() {
        toggleToolBar(false)
//        navigation.selectedItemId = R.id.navigation_add_patient
        navigation.labelVisibilityMode = View.VISIBLE
        replaceFragment(AddPatientFragment::class.java, ADD_PATIENT, false, null, R.id.frame_container)
    }

    private fun toMedicines() {
        toggleToolBar(false)
//        navigation.selectedItemId = R.id.navigation_medicine
        navigation.labelVisibilityMode = View.VISIBLE
        replaceFragment(MedicineFragment::class.java, MEDICINE, false, null, R.id.frame_container)
    }

    private fun toDashboard() {
        toggleToolBar(false)
        navigation.labelVisibilityMode = View.VISIBLE
//        navigation.selectedItemId = R.id.navigation_home
        replaceFragment(HomeFragment::class.java, HOME, false, null, R.id.frame_container)
    }

    private fun toggleToolBar(value: Boolean) {
        supportActionBar?.setDisplayHomeAsUpEnabled(value)
        supportActionBar?.setDisplayShowHomeEnabled(value)
    }
}
android bottomnavigationview
1个回答
-2
投票

更新到最新的支持库版本28.0.0-alpha1,只需向BottomNavigationView添加一个属性。

<BottomNavigationView
 ....
 ....
 app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"/>

注意: - 请看这里Hide/Show bottomNavigationView on Scroll

© www.soinside.com 2019 - 2024. All rights reserved.