- Мы все знаем, что по умолчанию
BottomNavigationView
имеет несколько эффектов, таких как горизонтальный перевод и увеличенный текст, если выбран пункт меню.
![default](https://i.stack.imgur.com/FpnGB.gif)
Мы можем удалить перевод добавив
<com.google.android.material.bottomnavigation.BottomNavigationView
...
app:itemHorizontalTranslationEnabled="false"/>
![Translation Removed](https://i.stack.imgur.com/Ttgj0.gif)
Мы можем показать метку и удалить перевод вместе без
app:itemHorizontalTranslationEnabled="false"
таким образом
<com.google.android.material.bottomnavigation.BottomNavigationView
...
app:labelVisibilityMode="labeled"/>
![Labeled](https://i.stack.imgur.com/vwJlb.gif)
Если номер 3 нас не устраивает, мы все равно можем использовать тот же размер текста, что и неактивное меню, добавив
dimens
в
dimens.xml
.Делая это, мы получаем почти без анимации BottomNavigationView
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<dimen name="design_bottom_navigation_active_text_size"
tools:override="true">12sp</dimen>
</resources>
![enter image description here](https://i.stack.imgur.com/SpJew.gif)
БОНУСНАЯ ПРОБЛЕМА
Но есть еще одна проблема.Что если текст меню длинный текст?Что, если он состоит из 2 слов?
Если это ваш вопрос, вы увидите длинный текст, обрезанный при выборе меню.(Пожалуйста, посмотрите на третье меню)
![Long Text Problem](https://i.stack.imgur.com/GbATF.gif)
И это решение, которое я получил после экспериментов с BottomNavigationView
void selectFragment(MenuItem item) {
item.setChecked(true);
int itemID = item.getItemId();
if (itemID == R.id.menu_a) {
pushFragment(MenuAFragment.newInstance("MENU A"));
}
else if (itemID == R.id.menu_b) {
pushFragment(MenuAFragment.newInstance("MENU B"));
}
else if (itemID == R.id.menu_c) {
pushFragment(MenuAFragment.newInstance("MENU C"));
}
else if (itemID == R.id.menu_d) {
pushFragment(MenuAFragment.newInstance("MENU D"));
}
else {
pushFragment(MenuAFragment.newInstance("MENU E"));
}
/**** START FROM HERE ****/
TextView largeTextView = bottomNavigationView.findViewById(itemID)
.findViewById(com.google.android.material.R.id.largeLabel);
TextView smallTextView = bottomNavigationView.findViewById(itemID)
.findViewById(com.google.android.material.R.id.smallLabel);
smallTextView.setVisibility(View.VISIBLE);
largeTextView.setVisibility(View.GONE);
}
В основном нам нужно только скрыть largeTextView
и показать smallTextView
![Long Text Problem Solved](https://i.stack.imgur.com/4j03T.gif)
Хотите узнать больше?Просто посмотрите на этот репо DisableShiftMode