Tengo un Preference
que habilita un adaptador de sincronización, y tarda un tiempo en hacer su trabajo cuando está activado. En consecuencia, cuando el usuario hace clic en Preference
, hago girar una AsyncTask para hacer el trabajo. Mientras tanto, desactivo el Preference
y reemplace la casilla de verificación con un ProgressBar
indeterminado. Tengo todo esto funcionando a través de un truco que implica una subclase de CheckBoxPreference
que se superpone al ProgressBar
en la parte superior del CheckBox
. Yuck.Personalizar CheckBoxPreference a través de android: widgetLayout
El atributo android:widgetLayout
parece que está diseñado exactamente para esto. Debería poder usar android:widgetLayout
para especificar un reemplazo para el CheckBox
predeterminado. Dicho reemplazo implementaría Checkable
y usa un ViewSwitcher
para cambiar apropiadamente entre un CheckBox
y un ProgressBar
.
El único problema es que CheckBoxPreference
, en su método onBindView()
, parece ignorar la posibilidad de que android:widgetLayout
se pueda utilizar. Lo hace de forma explícita esto:
View checkboxView = view.findViewById(com.android.internal.R.id.checkbox);
Esto efectivamente hace que sea imposible de cambiar de una costumbre Checkable
través android:widgetLayout
y tienen realmente funciona.
¿Esto es un descuido/error en CheckBoxPreference
, o he entendido mal android:widgetLayout
? ¿Hay una manera más limpia de hacer lo que estoy tratando de hacer?
¿Alguna vez encontrar una solución a esto? Acabo de golpearlo también. –
No realmente. Me quedé con [mi subclase] (https://github.com/loganj/foursquared/blob/master/main/src/com/joelapenna/foursquared/preferences/ProgressCheckBoxPreference.java) de 'CheckBoxPreference'. – loganj