如何更改应用栏中的文字?

问题描述

我目前正在开发一个需要创建导航模板的应用程序。我一直在微调我需要处理的应用程序的认导航模板的外观。但是,有一件事我一直无法找到一种解决方案,那就是更改应用程序栏中的文本。它一直说“主页”,但我需要在其中放置应用程序的标题。我已经尝试了多种方法,例如:在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"/>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...