剪辑列表选择器

时间:2013-06-06 13:17:54

标签: android listview

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

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

enter image description here

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

2 个答案:

答案 0 :(得分:3)

使用layer-list drawable。

抽拉/ 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>

答案 1 :(得分:1)

使用InsetDrawable作为自定义选择器,并使用自定义ShapeDrawable

例如:

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>

这假设您的ImageViews大小均匀。