我有一個Preference
,它啓用了一個同步適配器,並且在切換時需要一段時間才能真正完成它的工作。因此,當用戶點擊Preference
時,我分離出一個AsyncTask來完成這項工作。與此同時,我禁用了Preference
,並用不確定的ProgressBar
替換了複選框。我通過涉及CheckBoxPreference
的子類的一個破解工作,將ProgressBar
覆蓋在CheckBox
之上。呸。通過android自定義CheckBoxPreference:widgetLayout
android:widgetLayout
屬性看起來像是專門爲此設計的。我應該可以使用android:widgetLayout
來指定替代默認CheckBox
。所述替換將執行Checkable
並使用ViewSwitcher
在CheckBox
和ProgressBar
之間適當切換。
唯一的問題是CheckBoxPreference
在其onBindView()
方法中似乎忽略了可能使用android:widgetLayout
的可能性。它明確地做到這一點:
View checkboxView = view.findViewById(com.android.internal.R.id.checkbox);
這實際上使得它無法在自定義Checkable
通過android:widgetLayout
交換,並有實際工作。
這是一個疏忽/錯誤CheckBoxPreference
,還是我誤解了android:widgetLayout
?有沒有一種更清潔的方法來做我想做的事情?
你有沒有找到一個解決這個?我也打過了。 – 2011-06-29 14:35:51
不是。我堅持使用CheckBoxPreference的[我的子類](https://github.com/loganj/foursquared/blob/master/main/src/com/joelapenna/foursquared/preferences/ProgressCheckBoxPreference.java)。 – loganj 2011-07-17 16:52:40