Android ListFragment项目所选背景

Android ListFragment项目所选背景,android,listview,Android,Listview,因此,我设置了一个ListFragment,其中有一些选项可以打开新的片段。我的一部分是想让ListFragment中的每个项目(我大约有6个)在被选中时都有一个不同的颜色集,我调用我的getListView().setItemChecked(index,true) 有没有可能设定不同的背景,或者它们都必须是相同的?谢谢 是的,你可以让他们使用不同的背景。对于其中的每一个,您都需要构建一个StateListDrawable,它根据项目的状态选择所需的背景 如果查看布局片段演示,列表项使用此布局:

因此,我设置了一个ListFragment,其中有一些选项可以打开新的片段。我的一部分是想让ListFragment中的每个项目(我大约有6个)在被选中时都有一个不同的颜色集,我调用我的
getListView().setItemChecked(index,true)

有没有可能设定不同的背景,或者它们都必须是相同的?谢谢

是的,你可以让他们使用不同的背景。对于其中的每一个,您都需要构建一个StateListDrawable,它根据项目的状态选择所需的背景

如果查看布局片段演示,列表项使用此布局:

setListAdapter(new ArrayAdapter<String>(getActivity(),
        android.R.layout.simple_list_item_activated_1, Shakespeare.TITLES));
setListAdapter(新的ArrayAdapter(getActivity()),
android.R.layout.simple_list_item_activated_1,Shakespeare.TITLES));
这种布局是:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:background="?android:attr/activatedBackgroundIndicator"
    android:minHeight="?android:attr/listPreferredItemHeight"
/>

这里设置的安卓:背景可以归结为(黑暗非全息主题):


因此,只需编写您自己的drawTables,使用不同的drawTables作为其激活状态


(注意,我假设您使用的是引入激活状态的Honeycomb。对于以前的平台版本,这没有那么干净,但也不太难——您需要编写一个布局子类,实现可检查并根据已检查状态更改其背景。)

文本颜色如何?我可以使用同样的技术吗?是的,尽管它需要一个颜色资源来改变。
<selector xmlns:android="http://schemas.android.com/apk/res/android"
        android:exitFadeDuration="@android:integer/config_mediumAnimTime">
    <item android:state_activated="true"
            android:drawable="@android:drawable/list_selector_background_selected" />
    <item android:drawable="@color/transparent" />
</selector>