同期アダプターを有効にPreferenceする があり、切り替えたときに実際に機能するまでに時間がかかります。したがって、ユーザーが をクリックするPreferenceと、AsyncTask をスピンオフして作業を行います。それまでの間、 を無効にPreferenceして、チェック ボックスを indeterminate に置き換えますProgressBar。の上にCheckBoxPreferenceオーバーレイする のサブクラスを含むハックを介して、これらすべてを機能させています。うん。ProgressBarCheckBox
このandroid:widgetLayout属性は、まさにこのために設計されているようです。android:widgetLayoutデフォルトの代わりを指定するために使用できるはずですCheckBox。この置換は、 aと aを適切に切り替えるCheckableために a を実装して使用します。 ViewSwitcherCheckBoxProgressBar
唯一の問題はCheckBoxPreference、そのonBindView()方法では、 が使用される可能性を無視しているように見えることandroid:widgetLayoutです。明示的にこれを行います:
View checkboxView = view.findViewById(com.android.internal.R.id.checkbox);
Checkableこれにより、カスタムビアを交換しandroid:widgetLayoutて実際に機能させることが事実上不可能になります。
これは見落とし/バグですかCheckBoxPreference、それとも誤解android:widgetLayoutですか? 私がやろうとしていることを行うためのよりクリーンな方法はありますか?