着色BottomNavigationView

时间:2017-04-13 07:53:47

标签: android material-design android-bottomnav

我想用BottomNavigationView实现彩色elevation(当前设计lib版本25.2.0,测试设备7.1.2)。一些开始的代码:

<android.support.design.widget.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_gravity="bottom"
    android:elevation="8dp"
    app:elevation="8dp"
    app:menu="@menu/bottom_navigation" />

未绘制高程(阴影),因为没有背景。并且known issue此背景必须为白色 ...确定,所以我添加此行

    android:background="@android:color/white"

但我想为背景和白色图标和文字设置一些颜色......下面的行

    app:itemIconTint="@color/white"
    app:itemTextColor="@color/white"

整条是纯白色,包括内容,很明显...所以如果background必须是白色的,那么让我们改变每个项目的背景

    app:itemBackground="@drawable/bottom_navigation_item_background"

和drawable /

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/mycolor_dark"/>
    <item android:drawable="@color/mycolor"/>
</selector>

for drawable-v21 /(ripple)

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@android:color/white">
    <item android:drawable="@color/mycolor"/>
</ripple>

现在我们有彩色物品......再没有升高!当mycolor为白色(高程显示/绘制)时它会起作用...所以当我想要BottomNavigationView的高程时,backgrounditemBackground都必须为白色。

有趣的部分(问题证明?) - 让我们只用这个选择器检查高程:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@android:color/white"/>
    <item android:drawable="@color/mycolor"/>
</selector>

栏根本没有高程绘制,但是当我按任何菜单项时,它的背景变为白色......并且该项目上方有高程,仅此项目!

当我从drawable-v21 / XML文件中删除<item android:drawable="@color/mycolor"/>行(或将mycolor设置为白色)时,会显示高程。波纹颜色没有影响,可能是白色或任何其他(工作)。

问题是:如何使用自定义颜色设置BottomNavigationView样式以保持背景高度正常工作?

1 个答案:

答案 0 :(得分:0)

我使用app:theme="@style/AppTheme.PopupOverlay"来使用我的应用颜色。它们会自动设置为它们。 例如,如果您的主要颜色为绿色,则图标和文本将显示为绿色。 你需要保持白色背景和海拔......