Android BottomNavigationView在删除/隐藏后留下空白

Android BottomNavigationView在删除/隐藏后留下空白,android,bottomnavigationview,android-architecture-navigation,Android,Bottomnavigationview,Android Architecture Navigation,当用户未进行身份验证时,它将转到登录片段,若他进行身份验证,则转到主片段。当未经身份验证的用户打开应用程序时,bottomNavView应隐藏,但会留下空白 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activit

当用户未进行身份验证时,它将转到登录片段,若他进行身份验证,则转到主片段。当未经身份验证的用户打开应用程序时,bottomNavView应隐藏,但会留下空白

class MainActivity : AppCompatActivity() {

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

    val navigationController = findNavController(R.id.nav_host_fragment)
    val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_nav)

    findNavController(R.id.nav_host_fragment).addOnNavigatedListener { _, destination ->
        when (destination.id) {
            R.id.register1Fragment -> hideBottomNavigation()
            R.id.register2Fragment -> hideBottomNavigation()
            R.id.loginFragment -> hideBottomNavigation()
            else -> showBottomNavigation()
        }
    }

    NavigationUI.setupWithNavController(bottomNavigationView, navigationController)

    // Sets up the Toolbar actions (like Back Button) to be managed by the Navigation Component
    NavigationUI.setupActionBarWithNavController(this, navigationController)
}

private fun hideBottomNavigation() {
    // bottom_navigation is BottomNavigationView
    with(bottom_nav) {
        if (visibility == View.VISIBLE) {
            visibility = View.INVISIBLE

        }
    }
}

private fun showBottomNavigation() {
    // bottom_navigation is BottomNavigationView
    with(bottom_nav) {
        visibility = View.VISIBLE
    }
}

override fun onSupportNavigateUp() = findNavController(R.id.nav_host_fragment).navigateUp()
}
class MainActivity:AppCompatActivity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navigationController=findNavController(R.id.nav_主机_片段)
val bottomNavigationView=findviewbyd(R.id.bottom\u nav)
findNavController(R.id.nav_主机_片段).addOnNavigatedListener{{,目标->
何时(destination.id){
R.id.register1Fragment->HidebottonNavigation()
R.id.register2Fragment->HidebottonNavigation()
R.id.loginFragment->HidebottonNavigation()
else->showBottomNavigation()
}
}
NavigationUI.setupWithNavController(bottomNavigationView,navigationController)
//设置要由导航组件管理的工具栏操作(如后退按钮)
NavigationUI.setupActionBarWithNavController(此,navigationController)
}
私家娱乐藏身养殖业(){
//底部导航是底部导航视图
带(底部导航){
如果(可见性==视图.可见){
可见性=视图。不可见
}
}
}
私人娱乐节目导航(){
//底部导航是底部导航视图
带(底部导航){
可见性=View.VISIBLE
}
}
覆盖fun onSupportNavigateUp()=findNavController(R.id.nav_host_片段)。navigateUp()
}
以下是主要活动的xml。这显示了bottomNavView是如何实现的。根视图组是约束视图,高度和宽度设置为与父视图匹配。我很难弄清楚真正的问题在哪里

<fragment
    android:id="@+id/nav_host_fragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    app:navGraph="@navigation/main_navigation_graph"
    app:defaultNavHost="true"

    android:layout_width="match_parent"
    android:layout_height="0dp"
    app:layout_constraintBottom_toTopOf="@+id/bottom_nav"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />


<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottom_nav"
    style="@style/Widget.MaterialComponents.BottomNavigationView.Colored"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:labelVisibilityMode="unlabeled"
    android:background="@color/colorPrimary"
    app:itemBackground="@color/bottom_nav_state"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:menu="@menu/menu_bottom_nav" />

只需更改为:

private fun hideBottomNavigation() {
    // bottom_navigation is BottomNavigationView
    with(bottom_nav) {
        if (visibility == View.VISIBLE) {
            visibility = View.GONE

        }
    }
}
只需更改为:

private fun hideBottomNavigation() {
    // bottom_navigation is BottomNavigationView
    with(bottom_nav) {
        if (visibility == View.VISIBLE) {
            visibility = View.GONE

        }
    }
}
改为

private fun hideBottomNavigation() {
    // bottom_navigation is BottomNavigationView
    with(bottom_nav) {
        if (visibility == View.VISIBLE) {
            visibility = View.GONE

        }
    }
}
改为

private fun hideBottomNavigation() {
    // bottom_navigation is BottomNavigationView
    with(bottom_nav) {
        if (visibility == View.VISIBLE) {
            visibility = View.GONE

        }
    }
}

尝试“消失”而不是“不可见”。但是,当我登录然后再次注销时,我需要使用底部的空格登录页面。尝试“消失”而不是“不可见”。但是当我登录然后再次注销时,我需要使用底部的空格登录页面。但是当我登录然后再次注销时,我需要用底部的空格登录页面。但当我登录然后再次注销时,我需要用底部的空格登录页面。