Ho un Preference
che abilita un adattatore di sincronizzazione e richiede un po 'di tempo per eseguire il proprio lavoro quando attivato. Di conseguenza, quando l'utente fa clic su Preference
, eseguo un AsyncTask per eseguire il lavoro. Nel frattempo, disabilito lo Preference
e sostituisco la casella di spunta con un numero indeterminato ProgressBar
. Tutto questo funziona tramite un hack che coinvolge una sottoclasse di CheckBoxPreference
che si sovrappone allo ProgressBar
in cima allo CheckBox
. Che schifo.Personalizzazione di CheckBoxPreference tramite Android: widgetLayout
L'attributo android:widgetLayout
sembra progettato esattamente per questo. Dovrei essere in grado di utilizzare android:widgetLayout
per specificare una sostituzione per il valore predefinito CheckBox
. Tale sostituzione implementerebbe Checkable
e utilizzerà uno ViewSwitcher
per passare in modo appropriato tra uno CheckBox
e uno ProgressBar
.
L'unico problema è che CheckBoxPreference
, nel suo metodo onBindView()
, sembra ignorare la possibilità che sia possibile utilizzare android:widgetLayout
. Lo fa in modo esplicito questo:
View checkboxView = view.findViewById(com.android.internal.R.id.checkbox);
Questo rende effettivamente impossibile scambiare in un costume Checkable
via android:widgetLayout
e lo hanno effettivamente lavoro.
Si tratta di una svista/bug in CheckBoxPreference
o ho frainteso android:widgetLayout
? Esiste un modo più pulito per fare ciò che sto cercando di fare?
Hai mai trovato una soluzione a questo? L'ho colpito anche io. –
Non proprio. Ho bloccato con [la mia sottoclasse] (https://github.com/loganj/foursquared/blob/master/main/src/com/joelapenna/foursquared/preferences/ProgressCheckBoxPreference.java) di 'CheckBoxPreference'. – loganj