- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在创建抽屉导航,我看到 playtore 有彩色菜单图标我想知道我该怎么做。我尝试通过 colorFilter 在菜单图标上应用颜色,但应用程序强制关闭
这是我的代码
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/grp1"
android:checkableBehavior="single">
<item
android:id="@+id/navigation_songs"
android:checked="true"
android:icon="@drawable/ic_audiotrack_white_24dp"
android:title="@string/songs" />
<item
android:id="@+id/navigation_albums"
android:icon="@drawable/ic_album_white_24dp"
android:title="@string/albums" />
<item
android:id="@+id/navigation_artist"
android:icon="@drawable/ic_person_white_24dp"
android:title="@string/artists" />
<item
android:id="@+id/navigation_playlist"
android:icon="@drawable/ic_playlist_play_white_24dp"
android:title="@string/playlist" />
</group>
<group
android:id="@+id/grp2"
android:checkableBehavior="none">
<item
android:id="@+id/navigation_about"
android:icon="@drawable/ic_info_white_24dp"
android:title="@string/about" />
<item
android:id="@+id/navigation_settings"
android:icon="@drawable/ic_settings_white_24dp"
android:title="@string/settings" />
</group>
</menu>
最佳答案
要将所有图标刷成特定的颜色,您需要将app:itemIconTint
添加到您的NavigationView
:
<android.support.design.widget.NavigationView
........
app:itemIconTint="<your color>"/>
要仅使用两种颜色刷亮您的图标:
创建一个选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#0000FF" android:state_checked= "true" />
<item android:color="#FF0000" />
</selector>
并将其作为 app:itemIconTint
应用到您的 NavigationView
中:
<android.support.design.widget.NavigationView
........
app:itemIconTint="@drawable/tint_color_selector"/>
最后一步 - 将 android:checked="true"
添加到要刷不同的抽屉菜单 xml 中的 MenuItems
:
<item
android:id="@+id/nav_slideshow"
android:checked="true"
android:icon="@drawable/ic_menu_slideshow"
android:title="Slideshow" />
将所有图标刷成不同颜色,就像 Google 在 Google Play 中所做的那样:
禁用图标着色:
navigationView.setItemIconTintList(null);
将您想要的图标添加到 res/drawable
并在菜单的 xml 中将它们指定为 android:icon
。 (我可以为 android 图标推荐一个不错的服务 icons8.com/web-app/new-icons/android )
您可以绘制现有图标,而不是上传新的彩色图标,但这非常 hacky:
Drawable oldIcon = navigationView
.getMenu()
.findItem(R.id.nav_gallery)
.getIcon();
if (!(oldIcon instanceof BitmapDrawable)) {
return;
}
Bitmap immutable = ((BitmapDrawable)oldIcon).getBitmap();
Bitmap mutable = immutable.copy(Bitmap.Config.ARGB_8888, true);
Canvas c = new Canvas(mutable);
Paint p = new Paint();
p.setColor(Color.RED);
p.setColorFilter(new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY));
c.drawBitmap(mutable, 0.f, 0.f, p);
BitmapDrawable newIcon = new BitmapDrawable(getResources(), mutable);
navigationView
.getMenu()
.findItem(R.id.nav_gallery)
.setIcon(newIcon);
注意! 在模板项目的 res/drawables-v21
中,Google 使用 VectorDrawable
而不是旧的 BitmapDrawables
,所以这段代码在那里不起作用。
希望对您有所帮助。
关于android - 如何给抽屉导航的菜单项上色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34705823/
通过阅读文档,我确信这是明确声明的,但添加图标仍然是灰色的。 class _TaskState extends State { @override Widget b
通过阅读文档,我确信这是明确声明的,但添加图标仍然是灰色的。 class _TaskState extends State { @override Widget b
这个问题在这里已经有了答案: Get random elements from array in Swift (6 个答案) 关闭 7 年前。
你好,我有一个表,其中包含一些字段,例如 这里我想为表格整行设置颜色..意味着如果 ASR 值是 75 到 100 应该得到一种颜色,50 到 75 应该得到另一种颜色,低于 50 应该得到另一种颜色
如何为 fish 中的 ls 命令着色?我在 Mac 上使用带有适当字体等的 ITerm2。由于某种原因它停止在我的电脑上工作。当我做推荐的时候 function ls command ls
我尝试在 -webkit-transform:rotate(45deg) skew(5deg); 上添加颜色或背景色,但我没有尝试。请帮助我。 我有这个 Sencha Touch 的代码: .x-ch
我使用默认配色方案(稍作改动),没有着色插件。 不幸的是,现在我需要在无法使用 256 色模式的远程机器上工作(使用 Putty)。这看起来很纯净。 我尝试修复它,但我无法理解不同部分的突出显示名称是
是否可以给 scipy.spatial.Voronoi 上色?图表? I know it is. 但现在我的目标是根据色标为每个单元格着色以表示物理量。 如下图(PRL 107, 155704 (20
我正在使用 ggplot2 geom_bar 制作标准条形图。我试图用与最低值的条不同的颜色填充最高值的条。 例如, ggplot(mtcars, aes(x=as.factor(cyl) )) +
我正在尝试对 map 上的特定图 block 进行样式设置,但不知道如何设置。谷歌有一个我在这里指的图 block 的示例: https://developers.google.com/maps/do
我想通过添加一个名为“色调”的 Canvas 来为 Canvas 上的 png 着色,该 Canvas 会将颜色分配给主 Canvas 上的 png。但根本没有绘制任何东西: js fiddel co
我创建了一个模糊 View 并添加到主视图的 subview 中。这是我的代码: let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.ligh
我正在尝试实现与 this function in Matlab 相同的行为,其中每个箭头的颜色对应于它的大小和方向,本质上是从轮子中绘制它的颜色。我看到了this question ,但它似乎只适用
假设有一个fa图标: //这段代码不正确 我的目的是为奖杯本身着色,而不是为奖杯外的背景着色。现在我的奖杯看起来是黑色的,我怎样才能把奖杯的颜色改成黄色? 最佳答案 Font awesome 是
你好我正在做一个 Twitter 应用程序,我想给主题标签、用户名和 URL 上色这是我的手机上的课 class TweetTableViewCell: UITableViewCell { var t
我在下面尝试过,但它在解析颜色时抛出了一个语句错误。提前致谢。 hexColorStr = "0x0976b8" view.setBackgroundColor(Color.parseColor(St
我需要显示一个由圆形和多边形组成的 map ,每个圆形或多边形可能有不同的颜色。 我最初的计划是子类化 MKCircle 和 MKPolygon 并为我的 Region 类添加一个实例变量(其中包含将
我有以下用于生成箭头线的 ng 模板:
我正在使用 Git,使用 Windows 7、PowerShell 和 Posh-Git。我有以下别名设置: ls = log --pretty=tformat:"%C(yellow)%h\\ %C(
我是一名优秀的程序员,十分优秀!