Whi*_*erK 73 android android-listview
大家好,
我有两个关于Android中的ListView的问题:
如何获得 listview重点行的颜色?我试图使用ListView.getSelector()方法,根据它的文档应该给我我正在寻找的东西,但它给了我一个Drawable对象,我不知道如何从中检索颜色(如果可能的话). ..).
如何设置 listview聚焦行的颜色?在这里,我尝试在listview上使用setSelector()方法,向它传递一个ColorDrawable对象,但这样做的结果是列表视图的整个背景都涂成了那种颜色......这不是我想要的当然...
谢谢!
Chr*_*Orr 89
列表选择器drawable是StateListDrawable- 它包含对列表可能的每个状态的多个drawable的引用,如选择,聚焦,按下,禁用...
虽然您可以使用检索drawable getSelector(),但我不相信您可以Drawable从a 检索特定的StateListDrawable,也无法以编程方式直接从中检索颜色ColorDrawable.
至于设置颜色,您需要StateListDrawable如上所述.您可以使用android:listSelector属性在列表中设置它,在XML中定义drawable,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:state_focused="true"
android:drawable="@drawable/item_disabled" />
<item android:state_pressed="true"
android:drawable="@drawable/item_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/item_focused" />
</selector>
Run Code Online (Sandbox Code Playgroud)
Ric*_*ier 11
添加:@ Christopher的答案不适用于API 7/8(根据@ Jonny的正确评论)如果您使用的是颜色,而不是drawable.(在我的测试中,根据Christopher使用drawables工作正常)
使用颜色时,这里是2.3及以下的FIX:
根据@Charles Harley,2.3及以下版本中存在一个错误,其中用颜色填充列表项会导致颜色流出整个列表.他的修复是定义一个shape包含你想要的颜色的drawable,并使用它而不是颜色.
如果您只想使用颜色作为选择器,我建议您查看此链接,并定位到Android 2(或至少允许Android 2).
| 归档时间: |
|
| 查看次数: |
101384 次 |
| 最近记录: |