1

假设我有一个 ListView/GridView,每一行都包含一个 ImageView。此外,每一行都有一些填充。理想情况下,我们希望列表选择器位于顶部,因此我们使用drawSelectorOnTop="true". 好的,没问题,除了列表选择器覆盖了行的整个区域。理想情况下,我希望列表选择器仅覆盖 ImageView 的区域。下面是我所说的一个例子。

左边是理想情况下应该发生的事情,右边是实际发生的事情。

在此处输入图像描述

我能想出的唯一解决方案是在高度/宽度匹配的 ImageView 顶部添加一个额外的“空”视图,并将该空视图用作选择器。我想知道是否有任何其他或更好的方法来实现这一点?

4

2 回答 2

3

使用图层列表可绘制。

可绘制/selector_drawable.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" ><item android:drawable="@drawable/internet_list_focused_holo_light" android:top="10dp" android:bottom="10dp" android:right="10dp" android:left="10dp"> </item> </layer-list>

于 2014-02-11T08:42:30.737 回答
1

Use an InsetDrawable as your custom selector with a custom ShapeDrawable

For example:

drawable/my_selector.xml

<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/my_shape_drawable" 
    android:insetBottom="10dp"
    android:insetLeft="10dp" 
    android:insetRight="10dp" 
    android:insetTop="10dp"/>

drawable/my_shape_drawable.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="@color/selector" />
</shape>

This assumes your ImageViews are all of uniform size.

于 2013-06-06T13:36:34.367 回答