2013-03-27 16 views
20

Mi sono chiesto più volte se esiste un modo per definire i colori in colors.xml facendo riferimento a un altro colore che è stato definito. Beh, l'ho provato e, in effetti, sembra che tu possa fare riferimento ad altri colori usando @ color/XXX.Android: definizione dei colori facendo riferimento ad altri colori definiti

Per esempio uno di colors.xml potrebbe apparire come:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    … 
    <color name="primary_blue">#205081</color> 
    <color name="action_bar_text">@color/primary_blue</color> 
    … 
</resources> 

Ma io non voglio altri di usare direttamente la mia definizione primary_blue - che non ha senso fare qualcosa di blu senza contesto. La soluzione migliore che ho trovato è quella di prefissare i colori 'diretti' come primary_blue e quindi commentare che non dovrebbero essere usati direttamente.

C'è un modo per impedire l'uso di questi colori diretti, pur consentendo al mio file colors.xml di farvi riferimento? Sto pensando che forse gli stili o un apklib potrebbero aiutarmi.

+0

Se si utilizza lo stesso colore in situazioni diverse rispetto a un "contesto", in realtà non ha alcun senso. Inoltre, se action_bar_color è accessibile, sarà il colore primary_blue. – Luksprog

+0

Questo sarebbe davvero utile in quanto costringe buone pratiche di codifica. Peccato che non ci sia un modo per nascondere lo spazio dei nomi in xml. –

risposta

1

Aggiungere una risposta qui nel caso in cui qualcuno si imbattesse in questo in futuro.

Quando si crea una libreria Android, è possibile mark resources as public. Qualsiasi risorsa che non si trova nel file public.xml è considerata privata.

Implicitamente fare attributi privato non solo impedisce agli utenti del tuo grimorio di sperimentare codici suggerimenti di completamento da risorse delle biblioteche interne, ma permette anche di rinominare o rimuovere le risorse private senza rompere i clienti della vostra libreria. Le risorse private vengono filtrate dal completamento del codice e dall'editor dei temi e Lint ti avvisa quando provi a fare riferimento a una risorsa privata.

Problemi correlati