2011-12-30 19 views
13

La programación de Android me está volviendo loca. El XML o las formas programables para el desarrollo de GUI es hacer un buen desayuno del código para los perros viejos, algunas cosas aquí, algunas cosas allí.Constantes de color del sistema Android

Mi frustración actual es tratar de mantener todo XML y me gustaría establecer el color de fondo del TextView del mismo color que el color de fondo de Button sin tener que especificar el código de color exacto. Me gustaría utilizar una constante de sistema, algo así como java.awt.SystemColor.control, pero especificado en XML.

¿Hay alguna forma de hacerlo sin tener que volver a especificar un montón de cosas? Estoy buscando una solución como: android:background="{Insert constant here}".

Respuesta

17

Usted debe tener un archivo en res/valores llamados colors.xml, debería tener este aspecto:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="white">#FFFFFF</color> 
    <color name="grey">#7A7A7A</color> 
    <color name="background">#0044AA</color> 
    <color name="bluelight">#449DEF</color> 
    <color name="bluedark">#2F6699</color> 
    <color name="greenlight">#70C656</color> 
    <color name="greendark">#53933F</color> 
    <color name="orangelight">#F3AE1B</color> 
    <color name="orangedark">#BB6008</color> 
    <color name="black">#000000</color> 
</resources> 

a continuación, puedes llamar el color en XML como esto:

android:background="@color/greenlight" 
+3

Pero no quiero especificar el color. Quiero especificar un estilo de sistema – zam664

+1

Esta es generalmente la forma preferida de hacerlo, ya que no hay muchos colores definidos por el sistema, sin embargo, puede usar android: background = "@ android: color/white". Puede encontrar una lista completa aquí: http://developer.android.com/reference/android/R.color.html –

+0

Tengo una constante de color para, por ejemplo: 17170449, que necesito convertir en el código hexa decimal. ¿Es posible? Gracias de antemano @MattHarris –

20

Puedes usar cosas como "@ color/white", o para las constantes del sistema android, "@android: color/holo_red_light". Alternativamente, si desea más control, siempre se puede definir un fondo común en un estirable y establecer el fondo a "@ estirable/mydrawable"

Lista de recursos disponibles para Android: color aquí (como background_dark): http://developer.android.com/reference/android/R.color.html

+1

Este es el problema que estoy teniendo con Android. No quiero tener que redefinir todo yo mismo. Quiero usar estándares en el sistema. No me importa cuáles sean esos estándares. Solo quiero que se vea y se sienta un usuario similar. – zam664

+0

Esa es precisamente la razón por la que debe usar android: color/... hay muchos preajustes existentes que no son específicos del color y cambiarán según el fabricante. respuesta actualizada con el enlace –

+1

Solo un aviso, su ejemplo es incorrecto, no hay "@android: color/red" –

1

utilizado como esto: android:background="#FF00FF"

2

Consulte esta página: http://android-er.blogspot.com/2010/03/using-color-in-android.html

Se puede utilizar: "@android: el color/blanco" en el código XML. Me imagino que se admiten algunos otros colores comunes, pero no sé con certeza cuáles.

La solución preferida generalmente es crear su propio archivo de recursos colors.xml y hacer referencia a los que coloque allí.

0

No es necesario el uso de archivos XML para crear un XML constantes,

Puede ayudarle a: Java constants file

+0

Quiero hacerlo en XML, no en Java. Puedo obtener los colores a través de la programación de Java, pero la intención es utilizar XML para el diseño de la GUI y tener todo eso en una sola ubicación. No quiero la mitad de mi GUI en XML y la mitad en Java. – zam664

Cuestiones relacionadas