如何完全隐藏Android工具栏中的后退按钮(向上按钮)?

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

我正在开发一款带有一个 MainActivity 和三个片段的 Android 应用程序。我已成功禁用工具栏中的后退按钮(向上按钮),但它仍然在工具栏中呈现。我想确保后退按钮根本不会出现。

即使我使用 supportActionBar?.setDisplayHomeAsUpEnabled(false) 和 supportActionBar?.setDisplayShowHomeEnabled(false) 禁用了后退按钮,它仍然会在工具栏中呈现。

这是我的 MainActivity 中的相关代码:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    val toolbar = binding.toolbar
    setSupportActionBar(toolbar)
    toolbar.navigationIcon = null
    toolbar.title = "New Fragment Name"

    // Hide the back button (Up button) if it's present
    supportActionBar?.setDisplayHomeAsUpEnabled(false)
    supportActionBar?.setDisplayShowHomeEnabled(false)

    val navController = findNavController(R.id.nav_host_fragment_content_main)
    appBarConfiguration = AppBarConfiguration(navController.graph)
    setupActionBarWithNavController(navController, appBarConfiguration)

}

override fun onSupportNavigateUp(): Boolean {
    /*val navController = findNavController(R.id.nav_host_fragment_content_main)
    return navController.navigateUp(appBarConfiguration)
            || super.onSupportNavigateUp()*/
    Toast.makeText(this, "Back button disabled", Toast.LENGTH_SHORT).show()
    return false
}

我尝试过的: 设置toolbar.navigationIcon = null以删除后退按钮图标。 设置 supportActionBar?.setDisplayHomeAsUpEnabled(false) 以禁用后退按钮功能。 设置 supportActionBar?.setDisplayShowHomeEnabled(false) 以隐藏主页按钮。 我需要什么: 我需要确保后退按钮根本不会出现在工具栏中,无论进行任何操作或配置。

这是我的应用程序/src/main/res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".ui.mainActivity.MainActivity">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true">

        <com.google.android.material.appbar.MaterialToolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize" />

    </com.google.android.material.appbar.AppBarLayout>

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


</androidx.coordinatorlayout.widget.CoordinatorLayout>

屏幕截图显示工具栏中的后退按钮仍在渲染
enter image description herea screenshot that shows that the back button in the toolbar is still getting rendered

任何有关如何从工具栏中完全删除后退按钮的帮助将不胜感激!

android kotlin android-actionbar android-toolbar android-navigation
1个回答
0
投票

如果您对 AppBarConfiguration 使用

navController.graph
,如果片段未在 navigation/your_navigation.xml 中声明startDestination(例如
app:startDestination="@+id/home"
),它将呈现后退按钮。

要解决这个问题,可以在AppBarConfiguration中使用

topLevelDestinationIds

val appBarConfiguration = AppBarConfiguration(
   topLevelDestinationIds = setOf(R.id.home, R.id.dashboard, R.id.notifications)
)

topLevelDestinationIds
是片段 ID。

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