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