从ListView项目背景中删除边距

时间:2014-02-25 21:07:15

标签: android android-listview android-theme android-styles

我正在研究一个主题,通过将android:listSelector设置为我编写的选择器来为我的应用程序的ListView设置样式:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/listitem_pressed" />
    <item android:drawable="@drawable/listitem_selected" />
</selector>

这会更改按下或选择时单个列表项/行后面显示的背景。在这种情况下,listitem_pressed是9-Patch PNG,listitem_selected是定义渐变的XML drawable。这有效,但我注意到渐变占用了所有可用空间,而PNG周围有4或5像素的边距。

该边距来自何处以及为什么PNG的行为与XML drawable不同?有没有一种简单的方法可以摆脱它?如果可能的话,我希望能够仅使用主题(在应用程序级别,在清单中指定)来设置应用程序的样式,而无需设置单个ListView实例的样式,覆盖ListAdapter.getView()等。

1 个答案:

答案 0 :(得分:0)

虽然我遇到的问题部分是由于我没有意识到我得到的PNG(它在边界周围有空白),但是一旦我删除它,我遇到了另一个问题,背景是实际上与其他列表项重叠。 Corsair992给我的建议是:

不是依赖Android的默认值来绘制可绘制的边距和内容区域,而是在9补丁中指定内容区域。