如何使用白色为ImageView着色?

时间:2014-01-13 22:48:17

标签: android android-imageview

我有一个ListView,其中每个项目都包含一个ImageView和一个TextView,当选择一个项目时,我有一个选择器,将整个项目的背景设置为强蓝色。
我想要的是,当选择列表项时,我想将ImageView的前景色设置为白色。

这是我想要实现的目标

enter image description here

这是设备上的当前状态

enter image description here

选择器的代码

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_selected="true"
    android:drawable="@color/strong_blue" />
<item android:drawable="@android:color/transparent" />
</selector>

这是OnItemClickListener的代码

void onItemClick(AdapterView<?> parent, View view, int position, long arg3) {
    view.setSelected(true);
    ImageView imageView = (ImageView) view.findViewById(R.id.wishListDrawerImageView);
    imageView.setColorFilter(Color.WHITE, android.graphics.PorterDuff.Mode.MULTIPLY );
}

先谢谢。

更新

谢谢大家的好答案,但我已经考虑过第二个版本的图像是白色的,但不幸的是这些图标是动态分配的,我无法预测哪个图像将在ListView中显示,因此我无法设置图像的白色版本。

4 个答案:

答案 0 :(得分:1)

您无法设置图像的“前景色”,因为没有这样的东西。你必须切换图像。您可以更改图像的颜色,如here所述。我更喜欢第一种解决方案。

然而,在我看来,一个更简单的解决方案是在资源文件夹中保留两个不同的图像 - 一个为灰色,另一个为白色,并在两者之间切换。

答案 1 :(得分:0)

你可以使用layer-list drawable from this

答案 2 :(得分:0)

将listSelector设置为您想要的蓝色类型选择器,并在图像视图中设置具有白色图像的选择器并将其设置为imageview的背景。

imageview选择器的编写方式与listselector的编写方式相同,只是drawables会有所不同。

希望有所帮助!

编辑:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_pressed="true"
    android:drawable="@drawable/white_image" />
<item android:drawable="@drawable/regular_image" />
</selector>

答案 3 :(得分:0)

您应该使用 PorterDuff.Mode.MULTIPLY PorterDuff.Mode.SRC_ATOP