BottomNavigationView не показывает заголовок меню, которые неактивны.
Как показать названия всех элементов меню в bottomNavigationBar? Проблема в том, что в моем случае показывается только название элемента, по которому щелкают.
android
android-support-design
bottomnavigationview
Натан Рубинштейн
источник
источник
Ответы:
Реализация
BottomNavigationView
имеет условие: при наличии более 3-х позиций используйте режим смещения.В данный момент вы не можете изменить его с помощью существующего API, и единственный способ отключить режим сдвига - это использовать отражение.
Вам понадобится вспомогательный класс:
Затем примените
disableShiftMode
метод к своемуBottomNavigationView
, но помните, что если вы надуваете представление меню из своего кода, вы должны выполнить его после надувания.Пример использования:
PS.
Помните, что вам нужно выполнять этот метод каждый раз, когда вы меняете пункты меню в вашем
BottomNavigationView
.ОБНОВИТЬ
Вам также необходимо обновить файл конфигурации proguard (например, proguard-rules.pro), код выше использует отражение и не будет работать, если proguard запутывает
mShiftingMode
поле.Спасибо Мухаммеду Альфаифи за указание на эту проблему и предоставление фрагмента .
ОБНОВЛЕНИЕ 2
Как отметила Jolanda Verhoef, новая библиотека поддержки (
28.0.0-alpha1
), а также новая библиотека компонентов материалов (1.0.0-beta01
) предлагает открытое свойство, которое можно использовать для управления режимом смещения над 3 пунктами меню.В библиотеке компонентов материалов это также применимо, если есть 5 пунктов меню.
ОБНОВЛЕНИЕ 3
Как также отметил @ThomasSunderland, вы можете установить для этого свойства значение false
app:itemHorizontalTranslation="false"
безEnabled
постфикса, чтобы отключить смещение анимации.Вы можете проверить полное руководство по стилю BottomNavigation здесь
источник
Начиная с библиотеки поддержки 28.0.0-alpha1:
источник
app:
неandroid:
Чтобы отключить текстовую анимацию, вы также можете использовать это в вашем файле измерения.xml:
Вам также может понадобиться добавить это в свой манифест:
источник
tools:override="true"
<dimen name="design_bottom_navigation_active_text_size" tools:ignore="PrivateResource">12sp</dimen>
Теперь вы можете использовать
app:labelVisibilityMode="[labeled, unlabeled, selected, auto]"
в28-alpha
labeled
будет держать все метки видимымиunlabeled
будут показывать только иконки.selected
будет отображаться только метка для выбранного элемента и сдвиг элементов.auto
выберет маркированные или выбранные в зависимости от количества предметов, которые у вас есть. помечены для 1-3 предметов и выбраны для 3+ предметов.источник
Ответ Пшемыслава на языке котлина как функция расширения
Использование (с расширениями Kotlin для Android):
источник
Работает для меня
или
источник
Чтобы отключить текстовую анимацию и уменьшить размер шрифта, используйте это в вашем файле измерения.xml:
источник
Navigate
->File...
> ,design_bottom_navigation_item.xml
чтобы увидеть , что нет никакого другого пути.ОБНОВИТЬ
в Android SDK версии 28 и выше они изменились
item.setShiftingMode(false)
наitem.setShifting(false)
Также они убрали поле
mShiftingMode
Так что использование будет
источник
Как уже отмечали другие, начиная с библиотеки поддержки 28.0.0-alpha1 возможно:
или вы можете установить его программно .
Примечание: если вы обновляете старую версию библиотеки поддержки, не забудьте поднять версию SDK для компиляции. Проверьте версии библиотеки поддержки здесь: Поддержка библиотеки версий
Тем не менее, вы все равно можете получить labelVisibilityMode не найден при компиляции , если ваше приложение зависит от более старых версий библиотеки поддержки проектирования. Если это так, попробуйте выполнить обновление до версии с заданной зависимостью, которая зависит по крайней мере от версии 28.0.0-alpha1 библиотеки поддержки проектирования. Если это невозможно, определите зависимость явно.
Если вы используете Gradle
Чтобы явно добавить поддержку поддержки дизайна в ваш build.gradle :
реализация 'com.android.support:design:28.0.0'
источник
Для обновленного ответа используем значение по умолчанию. Обновление до последней библиотеки дизайна
и поместите в ваши атрибуты BottomNavigationView xml
Вы можете поставить это также программно
Вы можете найти источник здесь BottomNavigationView
Надеюсь, это поможет вам.
источник
app:labelVisibilityMode
?К вашему
BottomNavigationView
добавлениюapp:labelVisibilityMode="unlabeled"
что приводит к следующему
источник
Это очень просто, просто добавьте свойство в BottomNaviationView
источник
У меня было странное поведение с BottomNavigationView. Когда я выбирал какой-либо элемент / фрагмент в нем, фрагмент толкает BottomNavigationView немного ниже, поэтому текст BottomNavigationView идет ниже экрана, поэтому видны только значки, а текст скрывается при нажатии любого элемента.
Если вы столкнулись с таким странным поведением, то вот решение. Просто удалить
в вашем корневом макете фрагмента. Просто уберите это и бум! BottomNavigationView будет работать нормально, теперь он может быть показан с текстом и значком. У меня было это в моем корне CoordinatorLayout фрагмента.
Также не забудьте добавить
в вашей активности, чтобы отключить режим переключения. Хотя это не совсем связано с заданным вопросом, но все же я считаю это полезным.
источник
Это сторонняя библиотека, которую я использую, и она имеет много опций настройки, таких как отключение режима сдвига, отображение только значков, настройка размера значков и т. Д. BottomNavigationViewEx
источник
Чтобы полностью удалить анимацию:
Если вы также хотите избавиться от этой раздражающей маленькой анимации верхнего поля, вам нужно больше кода отражения. Вот полное решение, которое удаляет любую анимацию:
И убедитесь, что добавили это в ваш конфигурационный файл proguard:
источник
обновите вашу библиотеку поддержки до 28.0.0.
источник
Если вы используете support: design: 28.0.0 добавьте эту строку app: labelVisibilityMode = "unlabeled" в ваш BottomNavigationView
источник
просто хочу добавить, что выше этого метода disableShiftMode добавить ниже код тоже. @SuppressLint ( "RestrictedApi")
источник
https://android.jlelse.eu/disable-shift-label-animation-from-bottom-navigation-android-b42a25dcbffc
1
2
3
источник
Вы можете использовать это для отображения текста и значков в BottomNevigationView от 3 до 5 элементов и остановки сдвига.
Но вы столкнетесь с проблемой обрезки длинного текста в BottmNevigationView для 5 элементов. для этого я нашел хорошее решение для остановки смещения текста, а также иконки BottomNevigationView. Вы также можете остановить смещение текста и значков в BottomNevigationView. Снимки кода приведены здесь.
1. Добавьте эту строку кода в BottomNevigationView, как показано
2. Добавьте пункты меню следующим образом:
3. Добавьте этот стиль в файл style.xml:
4) Добавьте их в папку Dimen
Я получил помощь по этой ссылке и ссылке. Вы также можете получить помощь, изучив эти ссылки. Это мне очень помогает. Надеюсь, это также поможет вам. Спасибо....
источник