如何向应用主题添加CardView属性?

2023-11-25

我的问题类似于“如何将 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>

我可以将它附加到主样式吗?


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

@param defStyleAttr当前主题中包含的属性 对提供默认值的样式资源的引用 风景。可以为 0 以不查找默认值。

所以你必须做

属性.xml

<attr name="myCardViewStyle"/>

样式.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);
}

就是这样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何向应用主题添加CardView属性? 的相关文章