другой цвет фона для нижней навигационной вкладки, выбранный элемент с использованием дизайна материала - PullRequest
1 голос
/ 10 февраля 2020

Я хочу реализовать цвет фона выбранного элемента, как показано ниже на изображении

enter image description here

, но, к сожалению, все пытаются ответить на это с помощью какой-либо третьей стороны библиотека.

Я хочу добиться этого с помощью самого компонента дизайна материала

Это мой код

<com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/id_navigation_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_gravity="bottom|start"
        app:itemBackground="@android:color/white"
        app:itemIconTint="@drawable/bottom_navigation_style"
        app:itemTextColor="@drawable/bottom_navigation_style"
        app:menu="@menu/bottom_navigation_menu_items" />

style. xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/colorPrimary" android:state_selected="true" />
    <item android:color="@android:color/darker_gray" android:state_selected="false" />

</selector>

Может ли это быть достигнуто или нет только с помощью компонента дизайна материала, просто скажите мне в ответ.

заранее спасибо

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Хорошо, я обнаружил любопытную вещь: у вас не может быть цвета фона и стиля текста / значка в одном файле.

, поэтому вам нужны два файла

bottom_navigation_style. xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/colorPrimary" android:state_selected="true" />
    <item android:color="@android:color/darker_gray" android:state_selected="false" />

</selector>

bottom_navigation_style_background. xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/colorPrimaryDark" android:state_checked="true" />
    <item android:drawable="@android:color/white" android:state_checked="false" />

</selector>

Затем по активности xml вам нужно добавить в itemBackground вот так

 app:itemBackground="@drawable/bottom_navigation_style_background"
 app:itemIconTint="@drawable/bottom_navigation_style"
 app:itemTextColor="@drawable/bottom_navigation_style"

Это будет работать наверняка.

1 голос
/ 10 февраля 2020

Пожалуйста, попробуйте это, в нижней части навигации укажите свойство

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:gravity="bottom"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/id_navigation_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="@drawable/drwable_value_selected"
        app:itemBackground="@drawable/drwable_value_selected"
        app:menu="@menu/menu" />
     </LinearLayout>

app: itemBackground

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/dark" android:state_checked="true"/>
<item android:drawable="@color/white"/>

Проверьте пункты меню

    <item
     android:id="@+id/action_message"
        android:enabled="true"
        android:checkable="true"
        android:title="search"
        app:showAsAction="ifRoom" />

checkable true является обязательным для выбора и отмены выбора цвета фона.

enter image description here

...