我正在开发一款带有一个 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>
任何有关如何从工具栏中完全删除后退按钮的帮助将不胜感激!
如果您对 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。