Wal*_*ann 1 android kotlin navigation-drawer hamburger-menu android-navigation-graph
请帮帮我。
简介:我使用导航组件,单活动模式,通过底部导航菜单切换 3 个片段。我还有抽屉导航。
所有片段都处于同一级别(都是根目录,直接从bottm nav访问)
事情应该是这样的:对于所有片段,必须有一个带有抽屉图标的工具栏。
问题:当应用程序启动时,主页片段显示抽屉的标准汉堡包图标,这是可以的。但是当我切换到任何其他片段时,抽屉图标变成箭头图标。此外,当按下该箭头时,抽屉从左侧滑动。这意味着它仍然可以作为显示抽屉菜单的按钮,但只是图标发生了变化。
问题:从底部导航菜单切换到另一个片段时,如何禁用汉堡图标转换为箭头图标?
文件:导航图:
<navigation 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:id="@+id/nav_graph"
app:startDestination="@id/bottom_nav_proposals"
>
<fragment
android:id="@id/bottom_nav_proposals"
android:name="com.base.ProposalsContainerFragment"
android:label="fragment_proposals"
tools:layout="@layout/fragment_proposals" />
<fragment
android:id="@id/bottom_nav_vehicles"
android:name="com.base..DriversVehiclesFragment"
android:label="Vehicles" >
</fragment>
<fragment
android:id="@id/bottom_nav_drivers"
android:name="com.bijov1apps.base.carrier.root.drivers.DriversVehiclesFragment"
android:label="Drivers" >
</fragment>
</navigation>
Run Code Online (Sandbox Code Playgroud)
活动:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//initializing Navigation COmponent
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_carrier_root) as NavHostFragment
val navController = navHostFragment.navController
//setting up toobar stuff
val toolbar: Toolbar = findViewById(R.id.toolbar_root)
toolbar.setupWithNavController(navController, drawerLayout)
//setting up navigation drawer stuff
val drawerLayout:DrawerLayout = findViewById(R.id.drawer_layout)
val navView: NavigationView = findViewById(R.id.nav_view)
val toggle = ActionBarDrawerToggle(
this, drawerLayout, toolbar, R.string.navigation_drawer_open,
R.string.navigation_drawer_close
)
drawerLayout.addDrawerListener(toggle)
toggle.syncState()
navView.setNavigationItemSelectedListener(this)
//setting up bottom navigation menu stuff
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.logisticBottomBar)
bottomNavigationView.setupWithNavController(navController)
}
Run Code Online (Sandbox Code Playgroud)
根据导航顶部应用栏文档:
\n\n\nNavigationUI 使用一个
\nAppBarConfiguration对象来管理应用程序显示区域左上角的导航按钮的行为。导航按钮\xe2\x80\x99 的行为会根据用户是否位于顶级目的地而变化。顶级目标是一组分层相关目标中的根或最高级别目标。顶级目标不会在顶部应用栏中显示向上按钮,因为没有更高级别的目标。默认情况下,应用程序的启动目的地是唯一的顶级目的地。
\n当用户位于顶级目的地时,如果目的地使用 .Navigation 按钮,则导航按钮将变为抽屉图标
\nDrawerLayout。如果目标不使用 DrawerLayout,则导航按钮将被隐藏。当用户位于任何其他目的地时,导航按钮将显示为向上按钮。
因此,如果您希望抽屉图标出现在所有顶级图标上,您需要创建一个AppBarConfiguration列出这些目的地的图标,并在调用时使用它setupWithNavController():
val appBarConfiguration = AppBarConfiguration(\n setOf(R.id.bottom_nav_proposals, R.id.bottom_nav_vehicles, R.id.bottom_nav_drivers), drawerLayout)\ntoolbar.setupWithNavController(navController, appBarConfiguration)\nRun Code Online (Sandbox Code Playgroud)\n同一页面上的导航抽屉文档还特别指出,在使用导航时根本不应该使用。ActionBarDrawerToggle您必须删除所有该代码。
| 归档时间: |
|
| 查看次数: |
1659 次 |
| 最近记录: |