如何添加CardView属性应用主题? [英] How to add CardView attributes to app theme?

查看:182
本文介绍了如何添加CardView属性应用主题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题是类似如何把一个CardView属性在样式,但我需要去更深。

我用AppCompat的主题,我的风格看起来像

 样式名称=AppTheme父=Theme.AppCompat.Light.DarkActionBar>
    <项目名称=colorPrimary> @色/ toolbar_color< /项目>
    <项目名称=机器人:listViewStyle> @风格/ CustomListView< /项目>
< /风格>
 

和我创建单独的样式CardView

 <样式名称=CustomCardView父=CardView>
    <项目名称=cardBackgroundColor> @色/ card_background< /项目>
    <项目名称=cardCornerRadius> @扪/ card_corner< /项目>
< /风格>
 

我可以附加到主风格?

解决方案

 公共视图(上下文的背景下,ATTRS的AttributeSet,INT defStyleAttr)
 

  

@参数的 defStyleAttr 的当前主题的属性包含                引用,提供默认值的样式资源                风景。可以是0,不要找默认值。

所以,你需要做的

attrs.xml

 < attr指示NAME =myCardViewStyle/>
 

styles.xml

 <样式名称=AppTheme父=Theme.AppCompat.Light.DarkActionBar>
    <项目名称=myCardViewStyle> @风格/ CustomCardView< /项目>
< /风格>

<样式名称=CustomCardView父=CardView>
    <项目名称=cardBackgroundColor> @android:彩色/ holo_red_dark< /项目>
< /风格>
 

MyCardView.java

 公共MyCardView(上下文的背景下,ATTRS的AttributeSet){
    这(背景下,ATTRS,R.attr.myCardViewStyle);
}

公共MyCardView(上下文的背景下,ATTRS的AttributeSet,诠释defStyleAttr){
    超(背景下,ATTRS,defStyleAttr);
}
 

就是这样。

My question is similar to "How to put a CardView attribute in a style", but I need to go deeper.

I'm using AppCompat theme, and my styles looks like

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

and I create separate style for CardView

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

Can I attach it to main style?

解决方案

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

@param defStyleAttr An attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.

So you have to do

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

That's it.

这篇关于如何添加CardView属性应用主题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆