我的頭髮試圖讓Android ListView做我想做的事。如何讓Android ListView項目選擇器使用state_checked
我想在單選模式下使用一個自定義行佈局,它具有用於選定,按下和檢查的不同背景顏色的ListView(即,選擇由顏色而不是複選標記顯示 - 這是我通常會稱爲「選擇」,但在android中的選擇似乎線我要選擇之前,我按它)
我想嘗試一個背景選擇器與三個國家在它。它適用於state_selected和state_pressed,但不是state_checked。所以我創建了一個CheckableRelativeLayout,它擴展了RelativeLayout並實現了Checkable並用於每行的視圖。
的簡化版本如下所示:
<my.package.CheckableRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/bkg_selector">
>
<ImageView android:id="@+id/animage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
/>
</my.package.CheckableRelativeLayout>
bkg_selector看起來像
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/purple" />
<item android:state_checked="true" android:drawable="@drawable/red" />
<item android:state_selected="true" android:drawable="@drawable/darkpurple" />
<item android:drawable="@drawable/black" />
</selector>
顏色是別處定義。
這仍然沒有工作。因此,在自定義ListAdapter中,我跟蹤了「checked」行並嘗試了(在getView中)
if(position == checkedPosition) ret.getBackground()。setState(CHECKED_STATE_SET);
它仍然不起作用。我怎樣才能做到我想要的?
謝謝 - 我會盡力了這一點,看看它是否有效(挖掘出我的代碼以適應它!) – MrPurpleStreak 2011-02-13 18:32:08
如果可以的話,我會加倍努力! – Gallal 2012-02-22 00:08:58
比那還好,而不是設置點擊= TRUE,並覆蓋CheckableLinearLayout的performClick(),覆蓋此: @覆蓋 \t公共無效setChecked(布爾檢查){ \t \t mChecked =檢查; (Checkable c:mCheckableViews){ \t \t \t c。setChecked(選中); \t \t} \t \t refreshDrawableState(); \t} – 2012-05-24 19:03:13