2015-04-28 11 views
9

La mia domanda è simile a "How to put a CardView attribute in a style", ma ho bisogno di andare più in profondità.Come aggiungere gli attributi CardView al tema dell'app?

sto usando AppCompat tema, e il mio stile si presenta come

style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/toolbar_color</item> 
    <item name="android:listViewStyle">@style/CustomListView</item> 
</style> 

e creare lo stile separato per CardView

<style name="CustomCardView" parent="CardView"> 
    <item name="cardBackgroundColor">@color/card_background</item> 
    <item name="cardCornerRadius">@dimen/card_corner</item> 
</style> 

Posso collegarlo allo stile principale?

+0

Si prega di verificare [questa risposta] (http://stackoverflow.com/a/36005912/2826147). –

risposta

5
public View(Context context, AttributeSet attrs, int defStyleAttr) 

@param defStyleAttr Un attributo nel tema corrente che contiene un riferimento a una risorsa stile che fornisce valori di default per la vista. Può essere 0 per non cercare i valori predefiniti.

modo da avere a che fare

attrs.xml

<attr name="myCardViewStyle"/> 

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="myCardViewStyle">@style/CustomCardView</item> 
</style> 

<style name="CustomCardView" parent="CardView"> 
    <item name="cardBackgroundColor">@android:color/holo_red_dark</item> 
</style> 

MyCardView.java

public MyCardView(Context context, AttributeSet attrs) { 
    this(context, attrs, R.attr.myCardViewStyle); 
} 

public MyCardView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
} 

Questo è tutto.

+1

Potresti spiegare dove fare riferimento alla classe MyCardView in Codice o Stile? –

+0

@SenthilkumarS Basta usarlo nei file di layout proprio come qualsiasi altra vista. ' ...' –

Problemi correlati