Jas*_*Fel 7 android bottomnavigationview android-bottomnav
以下是我当前BottomNavigationView的XML.目前,所有三个图标drawable都是具有相同颜色的未填充图标.我希望能够在选择该状态时呈现图标的填充版本,并且可能更改颜色以使其显然是当前图标状态.以下图片是我的意思的一个例子.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_favorites"
android:enabled="true"
android:icon="@drawable/icon_flyer"
android:title="Flyer"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_schedules"
android:enabled="true"
android:icon="@drawable/icon_list"
android:title="List"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_music"
android:enabled="true"
android:icon="@drawable/icon_contact"
android:title="Contact"
app:showAsAction="ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud)
创建 res/color/bottom_nav_color.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="your_highlight_color" />
<item android:state_pressed="true" android:color="your_highlight_color" />
<item android:color="your_inactive_color" />
</selector>
Run Code Online (Sandbox Code Playgroud)
然后在您的底部导航视图中:
app:itemTextColor="@color/bottom_nav_color"
app:itemIconTint="@color/bottom_nav_color"
Run Code Online (Sandbox Code Playgroud)
小智 6
要按州更改图标颜色,您可以为BottomNavigationView中的"itemIconTint"属性设置可绘制的颜色状态.对于文本颜色,您可以在"itemTextColor"属性中设置相同的颜色状态drawable.以下是BottomNavigationView的可绘制颜色状态示例:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/green" android:state_pressed="true" />
<item android:color="@color/green" android:state_checked="true" />
<item android:color="@color/gray" />
</selector>
Run Code Online (Sandbox Code Playgroud)
"android:state_pressed"状态是菜单项的按下状态."android:state_checked"是菜单项的选定状态.
这只会更改BottomNavigationView中图标和标签的颜色.为了填充您的图标,您可以为菜单项中的"icon"属性设置一个可绘制的图标状态.以下是图标状态drawable的示例:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_favorites_filled" android:state_checked="true" />
<item android:drawable="@drawable/ic_favorites" />
</selector>
Run Code Online (Sandbox Code Playgroud)
小智 5
第 1 步:将所有图标添加到可绘制文件夹中
第 2 步:为每个图标创建新的可绘制资源文件。在名为“bottom_navigation_icon”的文件(例如)中,指定选择器。默认图标需要在最后一行说明:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_home_active"
android:state_checked="true"/>
<item android:drawable="@drawable/ic_home_inactive"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
第 3 步:在底部导航菜单中,为每个项目设置以下代码:
android:icon="@drawable/bottom_navigation_icon"
Run Code Online (Sandbox Code Playgroud)
就这样。现在您的图标会在您单击时发生变化,而在您单击离开时会变回上一个!
小智 1
您可以将 StateDrawable 设置为菜单项。使用以下代码在可绘制文件夹中创建一个 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_pressed_green"
android:state_pressed="true" />
<item android:drawable="@drawable/button_normal" />
</selector>
Run Code Online (Sandbox Code Playgroud)
更新适合您需求的 xml 文件(状态和可绘制),并在菜单项中引用它而不是当前图标。
| 归档时间: |
|
| 查看次数: |
5186 次 |
| 最近记录: |