【问题标题】:Change drawable.xml item colors programmatically以编程方式更改 drawable.xml 项目颜色
【发布时间】:2015-01-09 10:14:31
【问题描述】:

我正在使用这个 tab1.xml 可绘制对象:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/normal" />
<item android:state_pressed="true" android:drawable="@drawable/activated" />
<item android:state_selected="true" android:drawable="@drawable/activated" />
<item android:drawable="@drawable/normal" />
</selector>

那么,如何访问这个 tab1.xml 可绘制对象并以编程方式更改 正常 图像颜色?

【问题讨论】:

  • 这是一个图像,你基本上需要处理那个图像的位图。
  • 您能告诉我如何实现这一目标吗?如何访问tab1.xml drawable并修改里面的drawable?
  • 你能给我一个答案吗?谁拒绝了我的问题?怀斯曼
  • Drawable myIcon = getResources().getDrawable( R.drawable.normal ); ColorFilter filter = new LightingColorFilter( Color.BLACK, Color.BLACK); myIcon.setColorFilter(filter); 试试这个
  • 顺便说一句,你为什么要这样做?对我来说毫无意义。它已在选择器中使用。

标签: android xml-drawable


【解决方案1】:

实现此目的的唯一方法是应用ColorFilter

Drawable d = getResources().getDrawable(R.drawable.normal);
Color newColor = getResources().getColor(R.color.new_color);
d.setColorFilter(newColor, PorterDuff.Mode.SRC_IN);

【讨论】:

  • 这不是完全相同的代码。无论如何,选择器可能一直引用原始@drawable 资源。在这种情况下,您可以尝试摆脱选择器并使用侦听器以编程方式管理您的状态。就像 - 当你的按钮被点击时,将它的背景从 normal 更改为 activated,反之亦然。
  • @m iav 这就是我实际所做的。谢谢
猜你喜欢
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多