Preferencia setIcon a ColorDrawable no funciona en Android 5.0 Lollipop
En mi aplicación, utilizo la línea siguiente para distinguir algunas preferencias:
preference.setIcon(new ColorDrawable(color));
En las versiones de Android anteriores a Lollipop funciona bien y la preferencia muestra un icono cuadrado del color seleccionado, pero en Lollipop no se muestra ninguna.
- Android: ListPreference ocultar / deshabilitar valor
- Iniciar nueva actividad de PreferenceActivity
- Después de cambiar una preferencia (una configuración), el texto que muestra la configuración no se actualiza
- Iniciar Actividad desde la pantalla de preferencias (intención definida en el archivo xml)
- ¿Cómo puedo copiar SharedPreferences a una tarjeta SD?
¿Alguna idea de cómo resolverlo?
Gracias
Aquí hay una solución que está funcionando para mí:
preference.setIcon(getPreferenceIcon(color)); function Drawable getPreferenceIcon(int color) { if (Build.VERSION.SDK_INT < 21) return new ColorDrawable(color); int bitmap_size = 64; Bitmap bitmap = Bitmap.createBitmap(bitmap_size, bitmap_size, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); Paint paint = new Paint(); paint.setColor(color); canvas.drawRect(new Rect(0, 0, bitmap_size, bitmap_size), paint); return new BitmapDrawable(getResources(), bitmap); }
- Vista personalizada en Preferencias de diálogo
- Obtener clave, no valor, de la selección ListPreference - ¿Posible?
- ¿Cómo abrir o simular clic en android ListPreference, que es dentro de la categoría de preferencia?
- ¿Cuál es la diferencia de AppCompatPreferenceActivity y SettingActivity?
- ¿Cuál es el tamaño máximo de un valor de preferencia compartida de Android?
- ¿Hay alguna manera de hacer que SharedPreferences sea global en toda mi aplicación para Android?
- SharedPreferences reset: El tamaño del mapa no es 0 después de restablecer
- Android cambia el color de fondo para el fragmento de preferencia
He aquí una versión simplificada de la respuesta de The Matrix, he eliminado la verificación de la versión, ya que tampoco funcionaba correctamente en Ice Cream Sandwich (se mostró una línea delgada, no un cuadrado):
private Drawable getPreferenceIcon(int color) { int size = 200;// Set to a big size to fit all screens, will be contained anyway in the preference row Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); bitmap.eraseColor(color); return new BitmapDrawable(getResources(), bitmap); }
- ¿Cómo obtener la dirección IP del dispositivo peer en Android para WiFi-Direct (WiFi-P2P)?
- NoClassDefFoundError en Runtime en clase dentro de .AAR en Android Studio