我有一个带有 ImageView 和 TextView 的 LinearLayout“卡片”。我希望卡片在用户点击时突出显示。参见 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如何实现半透明颜色的触摸高亮效果?
最佳答案
令人惊讶的是,FrameLayout 有 foreground可用于此的属性。缺点是您必须添加额外的 FrameLayout 元素。实现很简单,所以直到您有时间实现花哨的图像处理(对图像进行一点去色,然后应用高光)和动态构建状态可绘制对象,这似乎已经足够好了。
所以在我的例子中,这将是:
<FrameLayout
android:foreground="@drawable/blue_highlight_image"
>
<ImageView ...>
</FrameLayout>
@drawable/blue_highlight_image 使用新的@color/pressed_image 值,它与@color/pressed 相似,但有一个 alpha channel ,例如:#81CFEB -> #AA81CFEB。
感谢@Vang 的建议。
关于android - 当用户点击 ImageView 时蓝色突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19725885/