Как работать с селектором элементов Bottomappbar? - PullRequest
1 голос
/ 16 мая 2019

В настоящее время я работаю с BottomAppBar для моего приложения «Музыка», с 4 пунктами меню, расположенными слева, и с FAB, закрепленным справа, каждый элемент будет перемещаться к одному фрагменту функции.

Я хочу установить селектор для всех 4 из этих пунктов меню, который похож на BottomNavigationView, который будет иметь 2 состояния, когда он выбран и не выбран. Но пока я изо всех сил пытаюсь это сделать.

Я уже пробовал селектор в XML или программно устанавливал его в коде, но ни один из них не работал.

Вот макет, которого я хочу достичь, извините, я не могу опубликовать прямое изображение, потому что у меня недостаточно репутации.
https://imgur.com/972GZX8

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

попробуйте это,

<com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/bottomNavigation"
            style="@style/Widget.MaterialComponents.BottomNavigationView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:background="@color/gray_f1f0f5"
            app:itemTextColor="@color/nav_item_colors"
            app:labelVisibilityMode="labeled"
            app:layout_constraintBottom_toBottomOf="parent"
            app:menu="@menu/bottom_navigation_menu" />
0 голосов
/ 16 мая 2019

Редактировать 1:

Ладно, отлично, поэтому я только что проверил это, и вы не сможете изменить цвет значков в bottomappbar, если выбран аналогично BottomNavigationView. Но есть хак для этого, где вы можете добавить BottomNavigationView вместе с BottomAppBar ..

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottom_app_bar"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layout_gravity="bottom"
        app:backgroundTint="#008577"
        app:fabAlignmentMode="end">

           <com.google.android.material.bottomnavigation.BottomNavigationView
              android:id="@+id/navigation1"
              android:layout_width="match_parent"
              android:layout_height="56dp"
              android:background="?android:attr/windowBackground"
              app:itemBackground="@android:color/white"
              app:itemIconTint="@drawable/nav_item_colors"
              app:itemTextColor="@drawable/nav_item_colors"
              app:menu="@menu/navigation" />

  </com.google.android.material.bottomappbar.BottomAppBar>

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_attach_money_black_24dp"
        app:layout_anchor="@id/bottom_app_bar" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

В вашем случае создайте пять пунктов меню и отключите пятый пункт меню в бнв. Таким образом, ваш потрясающий появится в этом месте.

Старый ответ:

Попробуйте это :

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/navigation1"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:layout_alignParentBottom="true"
    android:layout_gravity="bottom"
    android:background="?android:attr/windowBackground"
    app:itemBackground="@android:color/white"
    app:itemIconTint="@drawable/nav_item_colors"
    app:itemTextColor="@drawable/nav_item_colors"
    app:menu="@menu/navigation" />

В каталоге drawable , создайте nav_item_colors:

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