当我使用底部导航视图时如何从主页片段中的操作栏中删除后退箭头
How to remove back arrow from action bar in the home fragment when I'm using bottom navigation view
我为每个带标签的片段创建了三个片段和工具栏。我使用向上导航在主片段和其他片段之间切换。我的问题是,在主要片段中,我想从工具栏中删除后退箭头。我已经在主要 activity 上尝试过这个 actionBar?.setDisplayHomeAsUpEnabled(false)
但它没有 work.Please 帮助我
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val bottomNavView = bottom_nav
val navController = findNavController(R.id.fragment_nav_host)
setSupportActionBar(toolbar)
val actionBar = supportActionBar
val appbarConfig = AppBarConfiguration(setOf(R.layout.fragment_home,R.layout.fragment_favorite,R.layout.fragment_profile))
setupActionBarWithNavController(navController,appbarConfig)
bottomNavView.setupWithNavController(navController)
}
override fun onSupportNavigateUp(): Boolean {
val navController = this.findNavController(R.id.fragment_nav_host)
return navController.navigateUp()
}
}
这是 activity_main 布局上的工具栏代码
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:theme="@style/toolbarTheme"
app:layout_constraintTop_toTopOf="parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary" />
Screenshoot
您需要禁用操作栏的主页按钮,如下所示
setSupportActionBar(toolbar)
val actionBar = supportActionBar
if (actionBar != null) {
actionBar?.setDisplayShowHomeEnabled(false);
actionBar?.setHomeButtonEnabled(false);
}
在视图创建时,添加这个
(activity 作为 AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(false)
终于找到答案了。如果你查看 setupActionBarWithNavController 的文档,你会注意到这里设置的操作栏是通过方法 getSupportActionBar() 返回的,而不是 getActionBar(),建议在每个线程中使用。
现在如果你想像我想要的那样在片段级别上使用它,那么你还需要将片段持有的 activity 转换为 AppCompatActivity,这样你就可以访问 supportActionBar。
像这样:
(requireActivity() as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(false)
我为每个带标签的片段创建了三个片段和工具栏。我使用向上导航在主片段和其他片段之间切换。我的问题是,在主要片段中,我想从工具栏中删除后退箭头。我已经在主要 activity 上尝试过这个 actionBar?.setDisplayHomeAsUpEnabled(false)
但它没有 work.Please 帮助我
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val bottomNavView = bottom_nav
val navController = findNavController(R.id.fragment_nav_host)
setSupportActionBar(toolbar)
val actionBar = supportActionBar
val appbarConfig = AppBarConfiguration(setOf(R.layout.fragment_home,R.layout.fragment_favorite,R.layout.fragment_profile))
setupActionBarWithNavController(navController,appbarConfig)
bottomNavView.setupWithNavController(navController)
}
override fun onSupportNavigateUp(): Boolean {
val navController = this.findNavController(R.id.fragment_nav_host)
return navController.navigateUp()
}
}
这是 activity_main 布局上的工具栏代码
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:theme="@style/toolbarTheme"
app:layout_constraintTop_toTopOf="parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary" />
Screenshoot
您需要禁用操作栏的主页按钮,如下所示
setSupportActionBar(toolbar)
val actionBar = supportActionBar
if (actionBar != null) {
actionBar?.setDisplayShowHomeEnabled(false);
actionBar?.setHomeButtonEnabled(false);
}
在视图创建时,添加这个
(activity 作为 AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(false)
终于找到答案了。如果你查看 setupActionBarWithNavController 的文档,你会注意到这里设置的操作栏是通过方法 getSupportActionBar() 返回的,而不是 getActionBar(),建议在每个线程中使用。
现在如果你想像我想要的那样在片段级别上使用它,那么你还需要将片段持有的 activity 转换为 AppCompatActivity,这样你就可以访问 supportActionBar。
像这样:
(requireActivity() as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(false)