android 当我使用底部导航视图时,如何从主页片段的操作栏中删除后退箭头

pbgvytdp  于 2023-01-28  发布在  Android
关注(0)|答案(4)|浏览(99)

我已经创建了三个片段和工具栏为每个片段与标签。我已经使用导航切换到主页片段和其他片段。我的问题是,在主要片段中,我想从工具栏中删除返回箭头。我已经尝试了这个actionBar?.setDisplayHomeAsUpEnabled(false)的主要活动,但它没有工作。请帮助我

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

guykilcj

guykilcj1#

在“创建的视图”中,添加以下内容
(活动为应用程序兼容活动).supportActionBar?.setDisplayHomeAsUpEnabled(假)

ibrsph3r

ibrsph3r2#

您需要禁用操作栏的主页按钮如下

setSupportActionBar(toolbar)
   val actionBar = supportActionBar
        if (actionBar != null) {
            actionBar?.setDisplayShowHomeEnabled(false);
            actionBar?.setHomeButtonEnabled(false);
        }
pjngdqdw

pjngdqdw3#

终于找到了答案。如果你检查文档的setupActionBarWithNavController,你会注意到,这里设置的动作栏返回的方法getSupportActionBar()和NOT getActionBar(),在每个线程中建议使用。
现在,如果您希望像我所希望的那样在片段级别上进行此操作,那么您还需要将片段保存的Activity强制转换为AppCompatActivity,以便您可以访问supportActionBar。
就像这样:

(requireActivity() as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(false)
8wigbo56

8wigbo564#

Java代码将以下内容放入onview创建(.....)

try {
        ((AppCompatActivity) getActivity()).getSupportActionBar().hide();
    } catch (Exception ex) {
        ex.printStackTrace();
    }

相关问题