web-dev-qa-db-ja.com

カスタムメニューを下部アプリバーに追加する方法

Androidで新しいMaterial Bottomアプリバーを使用しています。うまく実装できましたが、カスタムメニュー項目をバーに追加する方法がわかりません。メニュー項目を追加すると、Android:showAsAction = "always"オプションを指定した場合でも、メニュー項目が3つのドットとして表示されます。

下のスクリーンショットのような特定のアイコンが必要です。 Wanted result しかし、代わりに私はこのような結果を得ます。 enter image description here

これがレイアウトコードです。

<com.google.Android.material.bottomappbar.BottomAppBar
    Android:id="@+id/bottom_app_bar"
    style="@style/Widget.MaterialComponents.BottomAppBar"
    Android:layout_width="match_parent"
    Android:layout_height="50dp"
    Android:layout_gravity="bottom"
    app:backgroundTint="@color/colorPrimaryDark"
    app:fabCradleMargin="5dp"
    app:fabAlignmentMode="center"/>

<com.google.Android.material.floatingactionbutton.FloatingActionButton
    Android:id="@+id/fab"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    app:layout_anchor="@id/bottom_app_bar" />

そして、Javaコードです。

BottomAppBar bottomAppBar = (BottomAppBar) findViewById(R.id.bottom_app_bar);
setSupportActionBar(bottomAppBar);

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.navigation, menu);
    return true;
}

メニューコード。

<item
    Android:id="@+id/navigation_explore"
    Android:icon="@drawable/explore"
    Android:title="Explore"
    Android:showAsAction="always"/>

<item
    Android:id="@+id/navigation_profile"
    Android:icon="@drawable/profile"
    Android:title="Profile"
    Android:showAsAction="always"/>
6
Zankrut Parmar

たくさんの研究の末、私はようやく問題の解決策を見つけました。 「showAsAction」の名前空間を「Android」から「app」に変更するだけで、機能します。

<item
    Android:id="@+id/navigation_explore"
    Android:icon="@drawable/ic_search"
    Android:title="Explore"
    app:showAsAction="always" />
4
Zankrut Parmar

使用する Android:showAsAction="ifRoom"

新しいMaterial Bottom App Barと連携してアイコンを表示します。

https://developer.Android.com/guide/topics/resources/menu-resource

1
rampency

次のようにBottomAppBarでfabCradleDiameterを0dbに設定してみてください:app:fabCradleDiameter="0dp"

0

そのためにポップアップメニューを使用できます。メニュー画像を配置し、画像をクリックしてAndroidのポップアップメニューを開きます。これはメニューと同じです。

  PopupMenu popup = new PopupMenu(MainActivity.this, button);  
            //Inflating the Popup using xml file  
            popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());  

            //registering popup with OnMenuItemClickListener  
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {  
                public boolean onMenuItemClick(MenuItem item) {  
                    Toast.makeText(MainActivity.this,"You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();  
                    return true;  
                }  
            });  

            popup.show();

以下のリンクをたどることができます: https://www.javatpoint.com/Android-popup-menu-example

0
pooja majoka