2010-07-01 17 views
12

Tengo un componente personalizado que quiero dar los mismos colores que un TextView. Es decir, no quiero copiar sus colores, quiero obtener los colores de fondo y primer plano predeterminados, si existe tal concepto en android.Cómo obtener los colores predeterminados en Android

[Editar]

El siguiente parece producir el color del texto de mi TextView. ¿Pero es solo suerte? No es intuitivo para mí que un TextView predeterminado usaría android.R.attr.textColorSecondary? ¿Y por qué el resolveAttribute no devuelve el color directamente?

TypedValue tv = new TypedValue(); 
getContext().getTheme().resolveAttribute(android.R.attr.textColorSecondary, tv, true); 
Color holyColor = getResources().getColor(tv.resourceId); 

[Editar]

me encontré con el código fuente de Vista de Texto en android.git.kernel.org, pero parecía contener una gran cantidad de referrences a com.android.internal.R, que no creo que debo usar en mi propio código. Actualmente estoy buscando algún tipo de evidencia de que TextView usa android.R.attr.textColorSecondary.

[Editar]

me encontré con algún tipo de evidencia en developer.android.com, en styles.xml que TextView utiliza android.R.attr.textAppearanceSmall. textAppearanceSmall está documentado por defecto en "color de texto secundario".

Creo que tuve suerte después de todo, pero todavía no me gusta ese pequeño fragmento de código mio.

+0

Su observación también está respaldada por la documentación aquí: [http://developer.android.com/guide/topics/resources/accessing-resources.html#ReferencesToThemeAttributes](http://developer.android.com/ guide/topics/resources/accessing-resources.html # ReferencesToThemeAttributes "Referencia de atributos de estilo") – fr1550n

Respuesta

0

Lo que está buscando son atributos. Los atributos vinculan los widgets a los estilos. Por ejemplo, android:background es lo que configuraría para una vista en particular, pero existen atributos como android:panelBackground y android:windowBackground que puede usar anular para afectar al sistema en su conjunto.

Debería mirar a través de R.attr y luego vincular a esos atributos en su widget. Debería haber un número de ellos que están vinculados a TextView; Tendría sentido descargar el código fuente de Android y ver qué atributos se usan.

Cuestiones relacionadas