web-dev-qa-db-ja.com

下部ナビゲーションビューで事前に選択されたアイテムを設定しない

マテリアルデザインライブラリからプロジェクトに新しい下部ナビゲーションビューを追加していますが、デフォルトで事前に選択されたアイテムはありません。

今のところ、最初のアイテムがデフォルトで選択されています。

利用した

mBottomNavigation.getMenu().getItem(0).setChecked(false);

ただし、すべてのメニュー項目に対してforループで実行すると、デフォルトで最後の項目が再度選択されます。

これを達成する方法はありますか?

5
MRX

ニースコトリンのソリューションに興味がある人は、ここに私のものがあります:

//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"

ここで、色を変更する必要がある場合は、セレクターを変更するだけです。

1
BMU

次の行でsetChecked(false)の代わりにsetCheckableを使用します。

mBottomNavigation.getMenu().getItem(0).setCheckable(false);

わたしにはできる。

1
kansagra kartik

サンプルプロジェクトを作成しましたが、デフォルトではチェック項目はありません。コードにnavigationView.setCheckedItem(R.id.id)が含まれていないことを確認してください。

0
Daniel Luque