web-dev-qa-db-ja.com

androidxを使用したBottomNavigationView

私はいくつかのアプリを作成し、それにBottomNavigationViewを挿入したいと思っていました。

コードは完全に機能しましたが、gradleをandroidxに変更すると機能しなくなりました。

私のレイアウトのコンポーネント(activity_about):

<Android.support.design.widget.BottomNavigationView
    Android:id="@+id/bottom_navigation"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:menu="@menu/bottom_navigation"
    app:itemBackground="@color/colorWhite"
    app:itemIconTint="@drawable/bottom_navigation_foreground"
    app:itemTextColor="@drawable/bottom_navigation_foreground" />

メニューファイルは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto">

<item
    Android:id="@+id/navigation_library"
    Android:enabled="true"
    app:showAsAction="ifRoom"
    Android:title="Library"
    Android:icon="@drawable/ic_home_black_24dp"/>

<item
    Android:id="@+id/navigation_search"
    Android:enabled="true"
    app:showAsAction="ifRoom"
    Android:title="Search"
    Android:icon="@drawable/ic_search_black_24dp"/>

<item
    Android:id="@+id/navigation_profile"
    Android:enabled="true"
    app:showAsAction="ifRoom"
    Android:title="Profile"
    Android:icon="@drawable/ic_account_circle_black_24dp"/>
</menu>

ドローアブルファイル(bottom_navigation_foreground):

<?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/colorPurpleFont" />
    <item Android:state_checked="false" Android:color="@color/Gray"  />
</selector>

そして私のコードは次のとおりです:

public class AboutActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_about);

        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation);
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.navigation_library:
                        startActivity(new Intent(AboutActivity.this, DiscoverActivity.class));
                        break;
                    case R.id.navigation_search:
                        Toast.makeText(AboutActivity.this, "Favorites", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.navigation_profile:
                        Toast.makeText(AboutActivity.this, "Nearby", Toast.LENGTH_SHORT).show();
                        break;
                }
                return true;
            }
        });
    }
}

私がandroidxに変更したのでそれが機能しない理由は何ですか?

ありがとうございました

12
benb

Androidxを使用して BottomNavigationViewMaterial Components Library に切り替える必要があります。

build.gradledependency を追加します

dependencies {
   //..
   implementation 'com.google.Android.material:material:1.1.0'
}

マテリアルテーマ を使用して、レイアウトに追加します。

<com.google.Android.material.bottomnavigation.BottomNavigationView
 .../>
10