假设我有一个ListView / GridView,每行包含一个ImageView。另外,每行都有一些填充。理想情况下,在这种情况下,我们希望列表选择器位于顶部,因此我们使用drawSelectorOnTop="true"
。没问题,除了列表选择器覆盖行的整个区域。理想情况下,我希望列表选择器仅覆盖ImageView的区域。以下是我所说的一个例子。
左边是理想情况下应该发生的事情,右边是实际发生的事情。
我能想到的唯一解决方案是在ImageView顶部添加一个额外的“空”视图,其高度/宽度匹配,并使用该空视图作为选择器。我想知道是否有其他或更好的方法来实现这一目标?
答案 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
大小均匀。