2011-12-30 17 views
13

La programmazione Android mi sta facendo impazzire. I metodi XML o programmabili per lo sviluppo della GUI stanno facendo una buona colazione al vecchio cane del codice - alcune cose qui, alcune cose lì.Costanti colore sistema Android

La mia attuale frustrazione sta cercando di mantenere tutto XML e vorrei impostare il colore di sfondo dello TextView dello stesso colore del colore di sfondo di un Button senza dover specificare il codice colore esatto. Vorrei usare una costante di sistema, qualcosa come java.awt.SystemColor.control, ma specificata in XML.

C'è comunque qualcosa da fare senza dover rispettare un sacco di cose? Sto cercando una soluzione come: android:background="{Insert constant here}".

risposta

17

Si dovrebbe avere un file in res/valori chiamati colors.xml, dovrebbe assomigliare a questo:

<?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> 

Poi si può chiamare il colore in XML come questo:

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

Ma io non voglio specificare il colore. Voglio specificare uno stile di sistema. – zam664

+1

Questo è generalmente il modo preferito per farlo, in quanto non ci sono molti colori definiti dal sistema, tuttavia è possibile utilizzare Android: background = "@ android: color/white". È possibile trovare un elenco completo qui: http://developer.android.com/reference/android/R.color.html –

+0

Ho una costante di colore per ex: 17170449 che ho bisogno di convertire nel codice decimale hexa. È possibile? Grazie in anticipo @MattHarris –

20

Puoi usare cose come "@ color/white" o per le costanti di sistema Android "@android: color/holo_red_light". In alternativa, se si desidera un maggiore controllo, è sempre possibile definire un fondo comune in un disegnabile e impostare lo sfondo su "@ drawable/mydrawable"

elenco delle risorse disponibili per Android: colore qui (come background_dark): http://developer.android.com/reference/android/R.color.html

+1

Questo è il problema che sto avendo con Android. Non voglio dover ridefinire tutto da solo. Voglio usare gli standard sul sistema. Non mi interessa quali sono questi standard, voglio solo un aspetto simile a un utente. – zam664

+0

Proprio per questo dovresti usare android: color/... ci sono molti preset preesistenti che non sono specifici del colore e cambieranno in base al produttore. risposta aggiornata con il link –

+1

Solo un avviso, il tuo esempio non è corretto, non c'è "@android: color/red" –

1

utilizzato in questo modo: android:background="#FF00FF"

2

Guarda cosa: http://android-er.blogspot.com/2010/03/using-color-in-android.html

È possibile utilizzare: "@android: colore/bianco" in XML. Immagino che siano supportati alcuni altri colori comuni, ma non so per certo quali.

La soluzione preferita è in genere creare il proprio file di risorse colors.xml e fare riferimento a quelli che si inseriscono all'interno.

0

Non è necessario utilizzare file XML per creare XML un costanti,

Può aiutare: Java constants file

+0

Voglio farlo in XML non in Java. Posso ottenere i colori tramite la programmazione Java, ma l'intenzione è di usare XML per la progettazione della GUI e avere tutto in un'unica posizione. Non voglio metà della mia GUI in XML e metà in Java. – zam664