我有一个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