После обновления до
implementation 'com.google.android.material:material:1.1.0'
На моем телефоне начал работать странный вид снизу. Высота была установлена на 56dp, а значки были обрезаны, а затем, когда я установил высоту на «wrap_content», я получил огромный padding-bottom.
Я тестировал его на разных телефонах и в разных android версиях, и он ведет себя по-разному во всех из них. (Android 10.0 с высотой, установленной для переноса содержимого, ведет себя так же, как Android 7.0 , но с меньшим отступом, но все еще огромным)
«Картинки или этого не случилось»:

Код:
Main. xml
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/main_nav"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_alignParentBottom="true"
android:background="@drawable/bottom_nav_bar"
android:elevation="10dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/nav_items">
</com.google.android.material.bottomnavigation.BottomNavigationView>
bottom_nav_bar. xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/colorDarkBlack"/>
<corners android:radius="1dp"
android:topLeftRadius="30dp"
android:topRightRadius="30dp"
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp"/>
</shape>
Main. java
BottomNavigationView bottomNavigationView = mMainNav.findViewById(R.id.main_nav);
BottomNavigationMenuView menuView = (BottomNavigationMenuView) bottomNavigationView.getChildAt(0);
bottomNavigationView.setItemIconTintList(null);
for (int i = 0; i < menuView.getChildCount(); i++) {
final View iconView = menuView.getChildAt(i).findViewById(com.google.android.material.R.id.icon);
final ViewGroup.LayoutParams layoutParams = iconView.getLayoutParams();
final DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
layoutParams.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 25, displayMetrics);
layoutParams.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 25, displayMetrics);
iconView.setLayoutParams(layoutParams);
}
}
nav_items. xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/nav_home"
android:icon="@drawable/home"
android:title=""
app:showAsAction="ifRoom"/>
<item
android:id="@+id/nav_blog"
android:icon="@drawable/glasses"
android:title=""
app:showAsAction="ifRoom"/>
<item
android:id="@+id/nav_workout"
android:icon="@drawable/workout"
android:title=""
app:showAsAction="ifRoom" />
<item
android:id="@+id/nav_settings"
android:icon="@drawable/settings"
android:title=""
app:showAsAction="ifRoom" />
То, что я пробовал:
Возвращение к «com.google. android .material: material: 1.0.0» решает проблему полностью, но я нужна новая версия.
Изменение стиля на устаревший style="@style/Widget.Design.BottomNavigationView"
, как указано в документации , ничего не делает.
Игра со значениями заполнения просто увеличивает кроп
Пытался <dimen name="design_bottom_navigation_height" tools:override="true">56dp</dimen>
, но также не работает
Понятия не имею, что делать. У кого-нибудь есть идеи, как мне решить эту проблему, чтобы она работала одинаково на каждом телефоне?
Заранее спасибо!