问题描述
我目前正在开发一个需要创建导航模板的应用程序。我一直在微调我需要处理的应用程序的默认导航模板的外观。但是,有一件事我一直无法找到一种解决方案,那就是更改应用程序栏中的文本。它一直说“主页”,但我需要在其中放置应用程序的标题。我已经尝试了多种方法,例如:在mainActivity中使用了setTitle("App title here")
,并且在清单文件中还尝试了将android:label
中的文本更改为App标题,但是我在网上找到的解决方案似乎无济于事工作。
有什么办法可以解决这个问题,并将“ home”文本更改为应用程序的标题?预先感谢您的任何建议。
在注释中要求的OnCreate中的代码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setTitle("Simple Dark Calculator")
setContentView(R.layout.activity_main)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
val navView: NavigationView = findViewById(R.id.nav_view)
val navController = findNavController(R.id.nav_host_fragment)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
appBarConfiguration = AppBarConfiguration(setof(
R.id.nav_home,R.id.nav_gallery,R.id.nav_slideshow),drawerLayout)
setupActionBarWithNavController(navController,appBarConfiguration)
navView.setupWithNavController(navController)
}
解决方法
尝试删除setTitle("Simple Dark Calculator")
行,并在setSupportActionBar
方法之后在下面添加代码:
getSupportActionBar().setTitle("Simple Dark Calculator");
要了解有关设置应用栏的更多信息: Set up the app bar
,检查doc:
NavigationUI使用导航图中的目标标签来使顶部应用栏的标题保持最新。
在导航图中,更改android:label
的 startDestination
。
<navigation
app:startDestination="@+id/nav_home">
<fragment
android:id="@+id/nav_home"
android:label="@string/menu_home"
... >
</fragment>
您还可以使用 OnDestinationChangedListener
在设置方法之后设置标题:
navController.addOnDestinationChangedListener { controller,destination,arguments ->
if (destination.id == R.id.nav_xxx){
supportActionBar?.title = "My Title"
}
//.....
}
,
在清单中尝试一下:
<activity android:name=".Youractivityname"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize"/>