У меня есть Preference
, который включает адаптер синхронизации и требует времени, чтобы фактически выполнить свою работу при переключении. Следовательно, когда пользователь нажимает Preference
, я запускаю AsyncTask для выполнения работы. Тем временем я отключаю Preference
и заменяю флажок неопределенным ProgressBar
. У меня все это работает через хак с участием подкласса CheckBoxPreference
, который перекрывает ProgressBar
поверх CheckBox
. Тьфу.
Атрибут 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
? Есть ли более чистый способ сделать то, что я пытаюсь сделать?