¿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.

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.

  • Android GridView Elemento seleccionado Fondo
  • Android GridView imperfección, cómo eliminar espacio en blanco extra a la derecha
  • Usando estados personalizados, onCreateDrawableState nunca se llama
  • Android: establece el elemento de vista de lista como "seleccionado" (resaltado)
  • Android: selector de texto personalizado
  • ¿Cuál es el valor predeterminado para presionar un elemento de lista
  • ImageButton en el widget de pantalla de inicio de Android
  • Android: ¿Cómo lograr el efecto de resplandor cuando presiona un elemento de lista con mucho tiempo?
  • Desactivar el color de resaltado de fondo del elemento de menú en android
  • ¿Cómo puedo agregar un nuevo botón en el widget del selector de fechas en android?
  • Fondo de color de fondo de Android Textview
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.