6 votes

Comment ajouter un menu personnalisé à la barre d'applications inférieure ?

J'utilise la nouvelle barre d'application Material Bottom dans Android. Je l'ai implémentée avec succès mais je ne sais pas comment ajouter des éléments de menu personnalisés à la barre. Chaque fois que j'ajoute les éléments de menu, ils s'affichent sous la forme de 3 points seulement, même si je fournis l'option Android:showAsAction="always".

Je veux des icônes spécifiques comme la capture d'écran ci-dessous. Wanted result Mais au lieu de cela, j'obtiens un résultat comme celui-ci. enter image description here

Voici le code de mise en page.

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

Et voici le code 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;
}

Code du menu.

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

4voto

Zankrut Parmar Points 302

Après tant de recherches, j'ai enfin trouvé la solution au problème. Il suffit de changer l'espace de nom de 'showAsAction' de 'Android' à 'app' pour que tout fonctionne.

<item
    android:id="@+id/navigation_explore"
    android:icon="@drawable/ic_search"
    android:title="Explore"
    app:showAsAction="always" />

1voto

rampency Points 45

Utiliser android:showAsAction="ifRoom"

J'ai réussi à le faire fonctionner avec le nouveau Material Bottom App Bar pour afficher les icônes.

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

0voto

pooja majoka Points 116

Vous pouvez utiliser le menu popup pour cela. Placez une image de menu et en cliquant sur l'image, vous ouvrez le menu popup d'Android qui est identique au menu.

  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();

Vous pouvez suivre le lien ci-dessous : https://www.javatpoint.com/Android-popup-menu-example

0voto

Essayez de définir le fabCradleDiameter à 0db dans la BottomAppBar comme : app:fabCradleDiameter="0dp"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X