2010-07-01 15 views
12

Ho un componente personalizzato che voglio dare gli stessi colori di un TextView. Cioè, non voglio copiare i suoi colori, voglio ottenere lo sfondo predefinito e i colori di primo piano, se c'è un tale concetto su Android.Come ottenere i colori predefiniti su Android

[Edit]

Il seguente sembra cedere il colore del testo del mio TextView. Ma è solo fortuna? Non è intuitivo per me che un TextView predefinito utilizzi android.R.attr.textColorSecondary? E perché resolveAttribute non restituisce direttamente il colore?

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

[Edit]

ho trovato il codice sorgente di TextView a android.git.kernel.org, ma sembrava contenere un sacco di referrences a com.android.internal.R, che non credo che dovrei usare nel mio codice. Attualmente sto cercando qualche tipo di prova che TextView usi android.R.attr.textColorSecondary.

[Edit]

ho trovato un qualche tipo di prove a developer.android.com, in styles.xml che TextView utilizza android.R.attr.textAppearanceSmall. textAppearanceSmall è documentato come predefinito in "colore testo secondario".

Immagino di essere stato fortunato, dopotutto, ma a me non piace ancora quel piccolo frammento di codice.

+0

L'osservazione è supportata anche dalla documentazione qui: [http://developer.android.com/guide/topics/resources/accessing-resources.html#ReferencesToThemeAttributes](http://developer.android.com/ guida/argomenti/risorse/accessing-resources.html # RiferimentiToThemeAttributes "Riferimenti agli attributi di stile") – fr1550n

risposta

0

Quello che stai cercando sono attributi. Gli attributi collegano i widget agli stili. Ad esempio, android:background è ciò che avresti impostato per una vista particolare, ma esistono attributi come android:panelBackground e android:windowBackground che puoi utilizzare per sovrascrivere il sistema nel suo complesso.

È necessario guardare attraverso R.attr e quindi collegare a quegli attributi nel proprio widget. Ci dovrebbero essere un numero di loro che sono collegati a TextView; avrebbe senso scaricare il codice sorgente di Android e vedere quali attributi sono usati.

Problemi correlati