当用户点击它时,蓝色突出显示在ImageView上

时间:2013-11-01 11:29:40

标签: android android-imageview touch-feedback

我有一张LinearLayout" card"使用ImageView和TextView。我想要在用户点击它时突出显示该卡。有关示例,请参阅http://www.youtube.com/watch?v=Yx1l9Y7GIk8&feature=share&t=15m17s

通过设置android:background="@drawable/blue_highlight"可以轻松地为TextView完成此操作。下面是res / drawable / blue_highlight.xml:

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

但是这对ImageView不起作用,因为图像在前面并且背景不可见。如何为ImageView设置半透明颜色的触摸高光效果?

2 个答案:

答案 0 :(得分:12)

令人惊讶的是,FrameLayout具有可用于此的foreground属性。缺点是你必须添加一个额外的FrameLayout元素。实现很简单,所以在你有时间实现花哨的图像处理(对图像去色,然后应用高亮显示)和动态构建状态drawable之前,这似乎已经足够了。

所以在我的情况下,这将是:

<FrameLayout
    android:foreground="@drawable/blue_highlight_image"
    >
  <ImageView ...>
</FrameLayout>

@ drawable / blue_highlight_image使用新的@color / pressed_image值,该值类似于@ color / pressed但具有alpha通道,例如:#81CFEB - &gt; #AA81CFEB。

感谢@Vang的建议。

答案 1 :(得分:1)

你是正确的方式。尝试使用blue_highlight.xml作为drawable,但使用其中的颜色使用您想要显示的图像,并定义第二个drawable,在突出显示时为图像添加颜色过滤器。

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