2014-10-23 9 views
13

Sto provando a definire il disegno circolare che richiede il colore primario del tema materiale. Ecco il mio codice di xml:Come ottenere il colore principale del tema materiale in xml drawable?

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > 
    <solid android:color="?attr/colorPrimary"></solid> 
</shape> 

Ma sto InflateException. Ho letto che non possiamo usare gli attributi in xml disegnabile. Quindi qualsiasi soluzione per questo?

risposta

2

Il tuo colorPrimary è memorizzato nel tuo colors.xml? Se è così, basta fare riferimento come @ color/colorPrimary.

In caso contrario, basta definirlo in colors.xml e consultarlo. Questi sono il colore verde-verde predefinito di meterial direttamente dal codice sorgente. Penso che material_deep_teal_500 sia quello che stai cercando.

<!-- Primary & accent colors --> 

<color name="material_deep_teal_200">#ff80cbc4</color> 
<color name="material_deep_teal_500">#ff009688</color> 

<color name="material_blue_grey_800">#ff37474f</color> 
<color name="material_blue_grey_900">#ff263238</color> 
<color name="material_blue_grey_950">#ff21272b</color> 
0

Non è possibile utilizzare i valori di attributo nei drawable. Sarebbe meglio usare un bianco/nero semitrasparente (a seconda se sei chiaro o scuro) come # 44FFFFFF e sovrapposto sullo sfondo di colore primario. Noterai che la maggior parte dei materiali disegnabili sono di una tonalità più chiara/scura su uno sfondo a colori primari ...

Altrimenti, se hai bisogno del colore duplicato - dovrai usare @ color/myPrimaryColor - che dovrebbe essere lo stesso di ciò che hai definito nel tuo tema come primaryColor.

12

Se si utilizza API 21 o superiore, è necessario utilizzare:

<solid android:color="?android:colorPrimary"></solid> 

Per le API più anziani si deve solo digitare:

<solid android:color="?colorPrimary"></solid> 
+0

piccolo miglioramento qui se si sta cercando ora al tema la vostra applicazione , prova ad aggiungere il colore definito in colors.xml al tema dell'app nel file styles.xml come questo, ** ** Ora quando assegni il colore del tema alla vista (o qualsiasi forma) nei layout, ci vorrebbe il colorPrimary del tema attivo corrente. –

Problemi correlati