¿Cómo obtienes el color de la selección en Android?
Necesito obtener el color de selección utilizado por Android para dibujar ListView y la selección de EditText. Sé que estos controles selectores de usuario para dibujar sus estados, pero he escrito algunos widgets que quiero coincidir con el color de la selección de la plataforma que están ejecutando y los drawables que se definen no se puede hacer porque están usando 9 Imágenes de parche en lugar de colores.
He mirado a través de la fuente de Android y no he encontrado un selector de color o color constante que puede utilizar para obtener el color que estoy buscando.
- El botón de imagen de 9 parches de Android no está escalado según lo previsto
- "Presione y mantenga presionado" en Android necesita cambiar estados (selector XML personalizado) usando onTouchListener
- Android: textColor del botón deshabilitado en el selector no se muestra?
- Aplicaciones de Android: Recuperación del contacto "Me" de la lista de contactos
- Cómo configurar el tono de timbre con RingtoneManager.ACTION_RINGTONE_PICKER?
- Cambio de estilo TextView state_pressed / state_focused / state_selected
- Selector de color de Android
- ¿Cómo cambio el tinte de un ImageButton en el enfoque / presione
- Elemento de ListView Estado de LongClick para el selector
- Simple Selector de directorio Android - ¿Cómo?
- Multiple DatePickers en la misma actividad
- Estado de artículo personalizado para selectores de android
- Color de fondo de Android LinearLayout Selector
Usted podría intentar esto:
android:background="?android:attr/selectableItemBackground"
Usted puede obtener todos los recursos de aquí
android-sdk-windows\platforms\android-<Desire API Level>\data\res\drawable-hdpi.
O usted puede utilizar directamente como esto
android:background="@android:drawable/list_selector_background"
O como esto tambien
Drawable d = getResources().getDrawable(android.R.drawable.list_selector_background);
Echa un vistazo a esta respuesta . Puedes navegar a través de los colores y estilos de la plataforma en el espejo github de Android. Tenga en cuenta que estos valores pueden ser diferentes para cada versión de Android. Si desea utilizar estilos de plataforma, simplemente no cree sus propios selectores personalizados para los controles. Espero que ayude.
Usted podría conseguir el list_selector_background
, según lo explicado por Jignesh, y después encontrar su color medio según lo demostrado en esta respuesta (lo haría en su código de la inicialización así que usted no tiene que perder el proceso de él cada vez, pero hey, Eso es optimización prematura). Que debe ser lo suficientemente coherente con el tema para que sus widgets coinciden con lo necesario.
Su código podría verse así:
public static Color getPlatformSelectionColor(Context c) { Bitmap bitmap = BitmapFactory.decodeResource(c.getResources(), android.R.drawable.list_selector_background); long redBucket = 0; long greenBucket = 0; long blueBucket = 0; long pixelCount = 0; for (int y = 0; y < bitmap.getHeight(); y++) { for (int x = 0; x < bitmap.getWidth(); x++) { Color c = bitmap.getPixel(x, y); pixelCount++; redBucket += Color.red(c); greenBucket += Color.green(c); blueBucket += Color.blue(c); // does alpha matter? } } Color averageColor = Color.rgb(redBucket / pixelCount, greenBucket / pixelCount, blueBucket / pixelCount); return averageColor; }
Usted puede lograr fácilmente lograr esto para los dispositivos de propiedad de google, pero no para otros fabricantes como la mayoría de los fabricantes han anulado los colores por defecto, diseños, fondos, etc para casi todas las versiones de android, incluyendo jelly-beans.
Así que idealmente no es recomendable y también difícil de seguir las directrices de diseño de todos y cada uno.
- ¿Cómo obtener un notificador de aplicación PERMANENTE en la barra de estado?
- Configuración de la aplicación de Android