God*_*win 8 android menu menu-items bottomnavigationview
我创建了一个BottomNavigationView包含三个项目。其中之一是用户选项卡。
对于访客选项卡,有一个图像,但 TintColor 正在应用,我们看不到它。
那么如何去除特定项目的色调?
我试过了
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
item.setIconTintList(null);
}
Run Code Online (Sandbox Code Playgroud)
但没有运气。它适用于 api 26 以上
我的活动
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:itemIconTint="@drawable/bottom_color_state"
app:itemBackground="@color/colorAccent"
app:itemTextColor="@drawable/bottom_color_state"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/menu_bottom_navigation" />
Run Code Online (Sandbox Code Playgroud)
底部颜色状态.xml
<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" />
<item android:color="@color/white" android:state_selected="true" />
<item android:color="@color/off_white" android:state_selected="false" />
<item android:color="@color/white" android:state_checked="true" />
<item android:color="@color/off_white" android:state_checked="false" />
<item android:color="@color/off_white" />
</selector>
Run Code Online (Sandbox Code Playgroud)
提前致谢
Sky*_*ile 21
似乎无法仅更改一个菜单项的色调,因为 BottomNavigationView 将色调应用到包装器 drawable 中的列表中的每个项目。您需要从导航视图中删除色调列表,并分别在每个菜单项图标上设置色调列表。
navView.itemIconTintList = null
然后在要着色的每个菜单项图标中,在矢量可绘制对象上设置颜色状态列表。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="@color/bottom_color_state"
android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/>
</vector>
Run Code Online (Sandbox Code Playgroud)
小智 7
我知道这个线程相当古老,但也许答案可以帮助一些偶然发现该线程的人。
我们遇到了同样的问题(使用 NavigationView 而不是 BottomNavigationView),并且由于某种原因 Skytile 的解决方案对我们不起作用。
正如 Skytile 指出的那样,不可能(至少在 API 级别 < 26 上)为单个项目设置自定义色调列表。但是,可以设置色调模式:
val itemsWithoutTint: List<Int> = listOf(12345)
for (i in 0 until getMenu().size()) {
val item = getMenu().getItem(i)
if (item.itemId in itemsWithoutTint) {
MenuItemCompat.setIconTintMode(item, PorterDuff.Mode.DST)
}
}
Run Code Online (Sandbox Code Playgroud)
通过将 TintMode 设置为 DST ( https://developer.android.com/reference/android/graphics/PorterDuff.Mode ),源(在本例中为色调颜色)将被忽略,目标(要着色的图标)将被忽略保持原样。
Che*_*ake -1
在资源中添加颜色资源文件夹并将bottom_color_state放入该文件夹中并替换bottom_color_state代码如下
<?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/white" />
<item android:state_checked="false" android:color="@color/colorPrimaryDark"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5166 次 |
| 最近记录: |