Нижняя навигация Просмотр стиля текста для выбранного элемента

Как применить стиль текста к выбранному элементу в BottomNavigationView? Я могу изменить цвета, но не могу понять, как изменить стили шрифтов (например, семейство шрифтов или сделать его полужирным / курсивом) в выбранном пункте меню. Есть ли способ сделать это только с помощью XML?

BottomNavigationView

В приведенном выше примере изображения я хочу, чтобы только ПОИСК был выделен другим шрифтом и жирным шрифтом. СООБЩЕНИЕ и ПАНЕЛЬ остаются без изменений.

в активности xml:

<android.support.design.widget.BottomNavigationView
    android:id="@+id/navigation"
    android:layout_width="0dp"
    android:layout_height="49dp"
    android:background="?android:attr/windowBackground"
    android:paddingBottom="5dp"
    android:paddingTop="5dp"
    app:itemIconTint="@color/bottom_nav_color"
    app:itemTextColor="@color/bottom_nav_color"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:menu="@menu/navigation"/>

res / menu / navigation.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_search"
        android:icon="@drawable/ic_search"
        android:title="SEARCH" />

    <item
        android:id="@+id/navigation_messages"
        android:icon="@drawable/ic_question_answer"
        android:title="MESSAGES" />

    <item
        android:id="@+id/navigation_dashboard"
        android:icon="@drawable/ic_dashboard_black_24dp"
        android:title="DASHBOARD" />
</menu>

разрешение / цвет / bottom_nav_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="@color/colorPrimary" />
    <item android:state_checked="false" android:color="#666666"/>
</selector>

person Mintz    schedule 19.07.2018    source источник


Ответы (2)


В BottomNavigationView есть атрибуты, называемые itemTextAppearanceActive и itemTextAppearanceInactive. Просто создайте стиль в res / values ​​/ styles.xml:

<style name="BottomNavigation.ActiveItemTextAppearance" parent="TextAppearance.AppCompat">
    <item name="android:textStyle">bold</item>
    <item name="android:fontFamily">@font/whatever</item>
</style>

Затем укажите его в BottomNavigationView:

app:itemTextAppearanceActive="@style/BottomNavigation.ActiveItemTextAppearance"

И наоборот для неактивных предметов.

person degemenc    schedule 05.02.2019

Я думаю, здесь стоит упомянуть, что, изменив стиль текста, Вы не измените цвет текста. Поэтому по-прежнему потребуется использовать app:itemTextColor

<com.google.android.material.bottomnavigation.BottomNavigationView
...
        app:itemIconTint="@color/bottom_nav_color_selector"
        app:itemTextColor="@color/bottom_nav_color_selector"
        app:itemTextAppearanceInactive="@style/BottomNavigationText"
        app:itemTextAppearanceActive="@style/BottomNavigationText.Selected"
        tools:menu="@menu/menu_bottom_navigation"
        />

bottom_nav_color_selector in res/colors

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/bottom_nav_selected" android:state_checked="true" />
    <item android:color="@color/bottom_nav_normal" />
</selector>

Стили

<style name="BottomNavigationText" parent="@android:style/TextAppearance"/>
<style name="BottomNavigationText.Selected">
    <item name="android:textStyle">bold</item>
</style>
person murt    schedule 28.07.2020