【问题标题】:select and highlight custom listview item选择并突出显示自定义列表视图项
【发布时间】:2012-06-05 10:09:36
【问题描述】:

我想定位自定义列表视图项

listView.setSelection(itemIndex);

选定的项目定位在列表视图可见部分的顶部。但没有突出显示。 如何在不重新创建列表视图的情况下设置列表视图项的默认突出显示(然后禁用突出显示并选择另一个)

谢谢!

附言我知道它之前被问过很多次,但我不明白它是如何工作的

更新 不适用于我的 android 2.2(adt 模拟器和带有 android 2.2 froyo 的智能手机)

drawable/listselector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@color/red" android:state_focused="true"/>
<item android:drawable="@color/yellow" android:state_selected="true"/>
<item android:drawable="@color/red" android:state_pressed="true"/>

</selector>

值/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <color name="black">#000000</color>
    <color name="white">#ffffff</color>
    <color name="yellow">#ffff00</color>
    <color name="red">#ff0000</color>
</resources>

布局/list1.xml

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:background="@drawable/listselector"
    android:clickable="true" >
</ListView>

【问题讨论】:

标签: java android listview


【解决方案1】:

您将需要一个选择器将其添加到 xml 中的布局中

android:clickable="true"
android:background="@drawable/selector"

并像这样在drawable 文件夹中创建一个selecor.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android">   
    <item android:state_selected="true" 
        android:drawable="@color/red"/> 
 </selector>

最后在colors.xml 中的values 文件夹中

<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="black">#000000</color> 
        <color name="white">#ffffff</color>
        <color name="red">#ff0000</color>
    </resources>

并调用

listView.requestFocusFromTouch();

之前

listView.setSelection(itemIndex);

【讨论】:

  • 它没有用。在“listView.setSelection(itemIndex);”之后没有突出显示列表视图项
  • 我在没有 setSelection 的情况下这样做。只需在布局中输入 android:clickable="true" android:background="@drawable/selector"
  • 做到了。也许是adt模拟器错误? (android sdk 2.2)
  • 我会在我的模拟器上测试并报告你
猜你喜欢
  • 1970-01-01
  • 2013-12-22
  • 2013-09-04
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 2013-10-26
  • 2012-11-21
  • 1970-01-01
相关资源
最近更新 更多