マテリアルデザインライブラリからプロジェクトに新しい下部ナビゲーションビューを追加していますが、デフォルトで事前に選択されたアイテムはありません。
今のところ、最初のアイテムがデフォルトで選択されています。
利用した
mBottomNavigation.getMenu().getItem(0).setChecked(false);
ただし、すべてのメニュー項目に対してforループで実行すると、デフォルトで最後の項目が再度選択されます。
これを達成する方法はありますか?
ニースコトリンのソリューションに興味がある人は、ここに私のものがあります:
//disable the preselected first item
//<navigation> is the bottom navigation view
navigation.menu.getItem(0).isCheckable=false
次に、選択リスナーで、ユーザーが選択したものを表示することを確認します
BottomNavigationView.OnNavigationItemSelectedListener { item: MenuItem ->
when (item.itemId) {
R.id.option1 -> {
item.isCheckable=true //here is the magic
//notify the listener
return@OnNavigationItemSelectedListener true
}
R.id.option2 ->{
item.isCheckable=true
//notify the listener
return@OnNavigationItemSelectedListener true
}
R.id.option3 ->{
//go to forgot user fragment
item.isCheckable=true
//notify the listener
return@OnNavigationItemSelectedListener true
}
else -> false
}
}
最後に、セレクターの色を作成して、color
で簡単に変更できるようにします。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_checked="true"
Android:color="@color/colorAccent" />
<item Android:color="@color/colorPrimary" />
そして、セレクターをナビゲーションビューに追加します
app:itemIconTint="@color/navigation_colors"
app:itemTextColor="@color/navigation_colors"
ここで、色を変更する必要がある場合は、セレクターを変更するだけです。
次の行でsetChecked(false)
の代わりにsetCheckable
を使用します。
mBottomNavigation.getMenu().getItem(0).setCheckable(false);
わたしにはできる。
サンプルプロジェクトを作成しましたが、デフォルトではチェック項目はありません。コードにnavigationView.setCheckedItem(R.id.id)
が含まれていないことを確認してください。