Я использую новую панель приложения Material Bottom в android. Я успешно реализовал это, но не знаю, как добавлять в панель собственные пункты меню. Каждый раз, когда я добавляю пункты меню, они отображаются как 3 точки, даже если я предоставляю опцию android: showAsAction = "always".
Мне нужны определенные значки, как на скриншоте ниже.
Но вместо этого я получаю такой результат.

Вот код макета.
<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"/>
Для этого вы можете использовать всплывающее меню. Поместите изображение меню и, щелкнув изображение, откройте всплывающее меню 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
Попробуйте установить fabCradleDiameter на 0 дБ в BottomAppBar, например:
app:fabCradleDiameter = "0dp"
использовать android:showAsAction = "ifRoom"
Я заставил его работать с новой панелью приложения Material Bottom, чтобы отображать значки.
https://developer.android.com/guide/topics/resources/menu-resource
После стольких исследований я наконец нашел решение проблемы. Просто изменив пространство имен showAsAction с android на app, чтобы все заработало.
<item
android:id = "@+id/navigation_explore"
android:icon = "@drawable/ic_search"
android:title = "Explore"
app:showAsAction = "always" />