我有一个使用抽屉布局的应用程序。例如:
在这里,当我单击图库时,就会打开一个新的活动。现在,当我关闭该活动时,焦点也出现在图库项目上,我想将焦点从图库项目更改为抽屉选项中的其他项目。我怎样才能做到这一点?
我使用以下代码来显示项目列表:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_camera"
android:icon="@drawable/ic_menu_camera"
android:title="Import" />
<item
android:id="@+id/nav_gallery"
android:icon="@drawable/ic_menu_gallery"
android:title="Gallery" />
<item
android:id="@+id/nav_slideshow"
android:icon="@drawable/ic_menu_slideshow"
android:title="Slideshow" />
<item
android:id="@+id/nav_manage"
android:icon="@drawable/ic_menu_manage"
android:title="Tools" />
</group>
<item android:title="Communicate">
<menu>
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_menu_share"
android:title="Share" />
<item
android:id="@+id/nav_send"
android:icon="@drawable/ic_menu_send"
android:title="Send" />
</menu>
</item>
</menu>
所以我没有任何线索将焦点改回到导入项。请帮忙
下面的代码使您的抽屉项目取消选中,就像原样一样,如果您愿意,您可以添加另一个来选中其他项目
了解更多详细信息 - 在此处输入链接描述
findNavController().addOnDestinationChangedListener{_,destination,_ ->
if (destination.id ==R.id.storageFolderFragment){
navView.menu.findItem(R.id.storageFolderFragment).isCheckable = false
}
if (destination.id ==R.id.categoryDownloadFragment){
navView.menu.findItem(R.id.categoryDownloadFragment).isCheckable = false
}
}
我知道已经过去很长时间了,但我想展示什么对我有用。万一它对某人有用。
首先记住要实例化
navController
val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragmentContainerView) as NavHostFragment
val navController = navHostFragment.navController
然后捕获目的地更改事件并使用 navigationView 的
setCheckedItem
方法,如下所示:
navController.addOnDestinationChangedListener { _, destination, _ ->
when(destination.id){
R.id.fragHome -> binding.navigationView.setCheckedItem(R.id.nav_home)
R.id.fragSettings -> binding.navigationView.setCheckedItem(R.id.nav_settings)
R.id.fragAbout -> binding.navigationView.setCheckedItem(R.id.nav_about)
}
}
希望我对你有帮助
您可以将 checkable="false" 添加到所有您不想获得焦点的项目
示例->
<item
android:icon="@drawable/ic_search"
android:id="@+id/nav_search_apps"
android:checkable="false"
android:title="Search Apps"/>
我们也可以通过编程来完成此操作
navView.menu.findItem(R.id.nav_search_apps).isCheckable = false