我有一个BottomNavigationView并想为选中状态和未选中状态都提供自定义图标。尝试使用选择器,但不起作用。
任何想法如何放置自定义图标?
答案 0 :(得分:2)
您只需在可绘制文件夹中创建可绘制选择器,即可根据视图中使用的小部件的状态更改图像
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/home_active" android:state_checked="true"/>
<item android:drawable="@drawable/home_inactive" android:state_checked="false"/>
并将此选择器设置在底部导航菜单文件中
<item
android:id="@+id/navigation_home"
android:icon="@drawable/nav_home_selector"
android:title="@string/tab_home_title" />
确保将这一行添加到您的Java文件中。除非您添加此行,否则该解决方案将不适用于所选图标。
bottomNavigationView.setItemIconTintList(null);
这将禁用所选项目图标的色彩效果。
答案 1 :(得分:0)
BottomNavigationView
将从菜单文件中获取其图标,因此您无法在选择器可绘制对象中进行设置。但是,如果要更改选定状态和未选定状态的颜色,可以执行以下操作。
按如下所示创建选择器可绘制的 nav_item_color_state
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_enabled="true" />
<item android:color="@color/colorPrimary" android:state_enabled="false" />
</selector>
使用如下所示的选择器drawable设置itemIconTint
和itemTextColor
,并且在选择时会更改图标和文本的颜色。
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemIconTint="@drawable/nav_item_color_state"
app:itemTextColor="@drawable/nav_item_color_state"
app:menu="@menu/bottom_navigation_main" />
检查here中的文档
答案 2 :(得分:0)
由于某种原因,“ state_enabled”在我的情况下不起作用,因此我使用了下面给出的选择器。 nav_color_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/black" android:state_checked="true" />
<item android:color="@color/grey" android:state_checked="false" />
</selector>
与BottomNavigationView一起使用
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
app:itemIconTint="@drawable/nav_color_selector"
app:itemTextColor="@drawable/nav_color_selector"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/bottom_nav_menu" />
此代码更改了我在bottom_nav_menu.xml中链接的矢量可绘制对象的填充颜色