Android 如何禁用底部导航视图的菜单项?

Android 如何禁用底部导航视图的菜单项?,android,kotlin,material-design,Android,Kotlin,Material Design,如何禁用“材质设计”底部导航菜单项?我可以设置.isClickable=false,但这不会将菜单项显示为禁用,类似于按钮。我无法执行。我已启用,API将不允许这样做 <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/menu_item_1" android:layout_width="match_parent" android:layout_height="match_p

如何禁用“材质设计”底部导航菜单项?我可以设置
.isClickable=false
,但这不会将菜单项显示为禁用,类似于按钮。我无法执行
。我已启用
,API将不允许这样做

<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/menu_item_1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:background="@color/colorDark"
app:menu="@menu/bottom_navigation_menu">

<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_home"
android:title="Home"
android:icon="@drawable/home_button"
app:showAsAction="ifRoom" />


class Something : AppCompatActivity() {
 private lateinit var mHomeBtn: BottomNavigationItemView
 override fun onCreate(...) {
  mHomeBtn = this.findViewById(R.id.action_home)
  mHomeBtn.isClickable = false <--- will make it unable to click but won't show disabled
  mHomeBtn.isEnabled = false <--- will throw an error
  mHomeBtn.setOnClickListener(this)
}
...

类:appcompativeactivity(){
私有lateinit变量mHomeBtn:BottomNavigationItemView
重写onCreate(…){
mHomeBtn=这个.findViewById(R.id.action\u home)

mHomeBtn.isClickable=false您应该获得
底部导航视图的菜单,然后找到并禁用所需的
菜单项

override fun onCreate(savedInstanceState: Bundle?) {
    // Find the bottom navigation view, (Use correct ID)
    // menu_item_1 is probably not a good ID for a navigation view
    val navView: BottomNavigationView = findViewById(R.id.nav_view)

    // Find the menu item and then disable it
    navView.menu.findItem(R.id.navigation_home).isEnabled = false
}

您应该获得
BottomNavigationView
的菜单,然后找到并禁用所需的
MenuItem

override fun onCreate(savedInstanceState: Bundle?) {
    // Find the bottom navigation view, (Use correct ID)
    // menu_item_1 is probably not a good ID for a navigation view
    val navView: BottomNavigationView = findViewById(R.id.nav_view)

    // Find the menu item and then disable it
    navView.menu.findItem(R.id.navigation_home).isEnabled = false
}

加上强有力的回答

navView.menu.findItem(R.id.navigation_home).isCheckable = false

这将禁用菜单项(灰色)。

添加到mightyWOZ答案

navView.menu.findItem(R.id.navigation_home).isCheckable = false

这将禁用菜单项(灰色).

您是否收到空指针异常?我没有收到空指针。我正在尝试找出如何在禁用时灰显底部导航菜单项。当前,它将阻止单击它,但它显示相同的颜色,而不是灰显。您是否收到空指针异常?我没有收到空指针。我正在尝试找出out如何在禁用时灰显底部导航菜单项。当前,它将阻止单击该菜单项,但它显示相同的颜色,而不是灰显。此“工作”与.isClickable=false类似,但不会显示禁用的菜单项。如何显示禁用的菜单项?按钮如何显示“灰显”如果禁用,则输出。此代码将禁用菜单项,菜单项的颜色将变为灰色。如果颜色没有变化,则表示您已将某些颜色属性从默认值修改为某些自定义设置。可能背景颜色此“有效”类似于.isClickable=false,但它不会显示禁用的菜单项。如何显示禁用的菜单项?类似于按钮如何显示“灰色”如果禁用,则输出。此代码禁用菜单项,菜单项的颜色将变为灰色。如果颜色没有变化,则表示您已将某些颜色属性从默认值修改为某些自定义设置。可能是背景色