12
所以我有一个ListFragment设置了几个选择,打开新的碎片。我的一部分想让ListFragment中的每个项目(我有大约6个)在选择时设置了不同的颜色,我打电话给我的getListView().setItemChecked(index, true);
是否可以设置不同的背景或它们必须相同?谢谢。ListFragment项目选择的背景
所以我有一个ListFragment设置了几个选择,打开新的碎片。我的一部分想让ListFragment中的每个项目(我有大约6个)在选择时设置了不同的颜色,我打电话给我的getListView().setItemChecked(index, true);
是否可以设置不同的背景或它们必须相同?谢谢。ListFragment项目选择的背景
是的,你可以让他们使用不同的背景。对于每一个你将需要建立一个StateListDrawable,根据项目的状态选择所需的背景。
如果你看一下布局片段演示,列表项使用此布局:
setListAdapter(new ArrayAdapter<String>(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"
/>
和Android:背景正在这里设置归结为(对于黑暗的非全息主题):
<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>
因此,只需编写您自己的drawables使用不同的drawables他们的激活状态。 (注意:我假设你正在使用引入了激活状态的Honeycomb,对于以前的平台版本,这不是很干净但不太难 - 你需要编写一个实现Checkable的布局子类并更改它的属性基于检查状态的背景。)
什么是文字颜色?我可以使用相同的技术吗? – aromero 2011-06-01 20:17:41
是的,虽然它需要变色的颜色资源。 – hackbod 2012-08-07 23:25:01