在 android BottomNavigationView 中选择的颜色

我指的是 这个。单击“计划”时会出现“计划活动”,但总是选择第一项颜色(收藏夹)。它不会从“收藏夹”项目的颜色中更改“计划”项目的颜色。还有,第三项(音乐)。我用的是 State _ check而不是 Android: state _ enabled。”如果使用 startActivity,它不会从“收藏夹”项的颜色更改“计划”项的颜色。如果没有,它就会变色。如何解决这种颜色的选择问题。

Activity _ main. xml

app:itemIconTint="@drawable/nav_item_color_state"
app:itemTextColor="@drawable/nav_item_color_state"
app:menu="@menu/bottom_navigation_main"

@ draable/nav _ item _ color _ state

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_enabled="true" />
<item android:color="@color/colorPrimaryDark" android:state_enabled="false" />
</selector>
70569 次浏览

你有没有听说过一个叫做 Roughike BottomBar 的包装工程,它使得 BottomNavigationView 的使用更加容易?项目可以找到 给你

我建议你使用这个项目,这是最新的,并在一个高层次的贡献。如果你参考使用这个,你可以简单地插入下面的代码来改变颜色时点击选项卡和做更多的自定义的东西:

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
Tab tab = newTab().setIcon(new BitmapDrawable(getResources(), icon)));
tab.getIcon().setColorFilter(Color.parseColor("#7E7E7E"), PorterDuff.Mode.SRC_IN);


tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override public void onTabSelected(TabLayout.Tab tab) {
if (tab != null && tab.getIcon() != null) {
tab.getIcon().clearColorFilter();
}
}
@Override public void onTabUnselected(TabLayout.Tab tab) {
if (tab != null && tab.getIcon() != null) {
tab.getIcon()
.setColorFilter(Color.parseColor("#7E7E7E"),
PorterDuff.Mode.SRC_IN);
}
}
@Override public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
});

所以基本上我在这里做什么,我颜色未选择的标签到 #7E7E7E和清除过滤器的颜色从选定的,使他们出现与他们的图标的原始颜色。当然,您也可以选择其他颜色填充,这取决于您。

希望这个能帮到你!

干杯,

Renc

这里有一个简单的解决你问题的办法

<android.support.design.widget.TabLayout
....
app:tabBackground="@drawable/tab_color_selector"
...
/>

选择器 res/drawable/tab_color_selector.xml:

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

更新选项卡项选择器的颜色。

在 res 文件夹中创建一个颜色目录,并创建 xml 文件来自定义底部导航项:

Res/color/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/your_color" />
<item android:state_checked="false" android:color="@color/your_color"/>
</selector>

BottomNavigationView中将 app:itemTextColorapp:itemIconTint的值设置为 @ color/bottom _ nav _ color

<android.support.design.widget.BottomNavigationView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/actionBarColor"
app:menu="@menu/my_navigation_items"
app:itemTextColor="@color/bottom_nav_color"
app:itemIconTint="@color/bottom_nav_color"/>


在我的情况下,我使用 底部导航插件。所以,我必须这样做如下:

在我的 Res/layp/layp _ 導航 _ view. xml中:

增加了 app:itemIconTint="@drawable/bottom_nav_colors"。因为,我只使用图标。所以如果你有文字添加这个: app:itemTextColor="@drawable/bottom_nav_colors"也。

    <com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/bottomNavBar"
android:background="@drawable/white_grey_border_top"
app:itemIconTint="@drawable/bottom_nav_colors"
app:menu="@menu/bottom_navigation_menu" />

然后在 可撤销/可提取目录中(因为 selector需要包含在 drawableanimatable目录中)添加 selector(正如其他提到的) :

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

然后在 Res/value/color. xml中添加 选择取消选择的颜色,例如:

<color name="grey">#bfbfbf</color>
<color name="blue">#3F51B5</color>
  1. 在可绘制文件夹中创建一个名为 navigation_view_colored.xml的 xml 文件,并将其放入:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:color="@color/gray" />
<item android:state_checked="true" android:color="@color/blue" />
</selector>
  1. 将您创建的 xml 添加到 app:itemIconTint
<com.google.android.material.bottomnavigation.BottomNavigationView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bottom_navigation"
android:layout_alignParentBottom="true"
app:itemIconTint="@drawable/navigation_view_colored"
app:itemTextColor="@color/blue"
app:menu="@menu/bottom_navigation"
android:background="?android:attr/windowBackground"/>

改变 theme:

values中创建 themes.xml并添加此样式

<style name="BottomNavThem" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimaryRed</item>
</style>

并设置为 BottomNavigationView

<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:menu="@menu/main_navigation_menu"
android:theme="@style/BottomNavThem"/>

其他使用可绘选择器的答案对我不起作用。

<?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:color="@color/bottomnavUnselectedColor"  />
</selector>

这在我移除 state_checked="false"的情况下起作用了

<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomnav"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/transparent_rect"
app:layout_constraintBottom_toBottomOf="parent"
app:itemIconTint="@drawable/bottomnav_selector"
app:menu="@menu/bottomnav_menu"/>