自定义图标-底部导航视图

时间:2018-12-04 05:22:58

标签: android android-layout bottomnavigationview android-bottomnav

我有一个BottomNavigationView并想为选中状态和未选中状态都提供自定义图标。尝试使用选择器,但不起作用。

任何想法如何放置自定义图标?

3 个答案:

答案 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设置itemIconTintitemTextColor,并且在选择时会更改图标和文本的颜色。

<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中链接的矢量可绘制对象的填充颜色