如何在应用程序主题中添加CardView属性?

9
我的问题类似于 "如何在样式中放置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>

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


请查看这个答案 - Amit Vaghela
1个回答

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类吗? - Senthilkumar S
@SenthilkumarS 只需像使用其他视图一样在您的布局文件中使用它。 <com.myapplicationpackage.views.custom.MyCardView> ...</com.myapplicationpackage.views.custom.MyCardView> - Joshua King

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接