如何处理Bottomappbar项目选择器?

时间:2019-05-16 04:46:31

标签: android floating-action-button android-bottomappbar

我目前正在为我的音乐应用程序使用BottomAppBar,左侧有4个菜单项,右侧是FAB,每个项将导航到一个功能片段。

我想为所有四个菜单项设置一个选择器,该选择器与BottomNavigationView相似,在被选中和未被选中时将具有2种状态。但是到目前为止,我一直在努力做到这一点。

我已经尝试使用XML进行选择器,或者以编程方式在代码中设置了选择器,但这些都不起作用。

这是我要实现的布局,对不起,因为我没有足够的声誉,所以无法发布直接图像。
https://imgur.com/972GZX8

2 个答案:

答案 0 :(得分:0)

编辑1:

很好,所以我刚检查了一下,选择与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>
  

根据您的情况,创建五个菜单项并禁用第五个菜单项   在bnv中。这样您的晶圆厂就会出现在那个地方。

旧答案:

尝试一下

<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" />

可绘制目录中,创建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>

答案 1 :(得分:0)

尝试一下

<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" />