Jetpack导航:在工具栏中隐藏标签

时间:2019-08-17 10:00:59

标签: android android-toolbar android-jetpack android-architecture-navigation

新的Jetpack导航使用label文件中的navigation.xml属性,根据显示的目标片段自动更新工具栏的标题。

我不想在任何一个目标片段中显示任何标题,因此我可以在该位置放一个SearchView

我已经尝试过android:label="@null",但是工具栏的标题只是回退到应用程序的标题。在menu.clear()回调中调用onCreateOptionsMenu()也无效。

如何仅从特定目标片段中完全从工具栏菜单中删除标题?

3 个答案:

答案 0 :(得分:1)

作为替代方案,updating UI components with NavigationUI的android准则显示您可以像这样使用addOnDestinationChangedListener

navController.addOnDestinationChangedListener { _, _, _ ->
    toolbar.title = ""
}

此解决方案不需要清除每个片段中的标题。

答案 1 :(得分:0)

一种解决方案是将操作栏隐藏在您特定的片段中,并在片段中用您的searchview等创建一个新的ActionBar。根据是支持栏还是普通的操作栏,onCreateView中将出现以下内容:

val act: MainActivity = activity as MainActivity
    act.supportActionBar?.hide()

或仅activity?.actionBar?.hide()

很显然,您必须如上所述在片段布局中设置自己的操作栏。您可以在内部使用com.google.android.material.appbar.AppBarLayout之类的androidx.appcompat.widget.Toolbar之类的东西,也可以使用任何自定义布局,无论是来自库还是您自己。

答案 2 :(得分:-2)

在Navigation.xml中删除android:label=""中的值

    <fragment
    android:id="@+id/navigation_profile"
    android:name="com.example.app.profile.ProfileFragment"
    android:label=""
    tools:layout="@layout/profile_fragment" >