2015-04-28 3 views
9

Мой вопрос похож на «How to put a CardView attribute in a style», но мне нужно идти глубже.Как добавить атрибуты CardView в тему приложения?

Я использую AppCompat тему, и мои стили выглядит

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

и создать отдельный стиль для CardView

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

Могу ли я прикрепить его к основному стилю?

+0

Пожалуйста, проверьте [этот ответ] (http://stackoverflow.com/a/36005912/2826147). –

ответ

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

@param defStyleAttr атрибут в текущей теме, которая содержит ссылку на ресурс стиля, который предоставляет значения по умолчанию для вида. Может быть 0, чтобы не искать значения по умолчанию.

Так что вы должны сделать

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); 
} 

Всё.

+1

Не могли бы вы объяснить, где обратиться к классу MyCardView в коде или стиле? –

+0

@SenthilkumarS Просто используйте его в своих файлах макетов, как и любой другой вид. ' ...' –

Смежные вопросы