如何将一个CardView属性放在一个样式中?
我有:
在一个文件build.gradle
(依赖关系)
dependencies { compile 'com.android.support:cardview-v7:21.0.+' }
在一个文件styles.xml
(样式定义)
<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto"> <style name="CardViewStyle"> <item name="android:layout_margin">5dip</item> <item name="card_view:cardCornerRadius">4dp</item> <item name="card_view:cardElevation">4dp</item> </style> </resources>
但编译器抱怨:
错误:找不到与给定名称匹配的资源:attr'card_view:cardCornerRadius'。
如何在样式中添加一些cardView属性?
将parent
属性设置为CardView
。
你甚至不需要添加xmlns:card_view="http://schemas.android.com/apk/res-auto"
。
工作代码片段:
<style name="CardViewStyle" parent="CardView"> <item name="cardCornerRadius">4dp</item> <item name="cardElevation">4dp</item> </style>
要添加到mklimek的答案,你甚至不需要添加父=“CardView”
只要避免cardView:前缀
所以,而不是
<item name="cardView:cardElevation">5dp</item>
只是使用
<item name="cardElevation">5dp</item>
所以我完整的样式代码是这样的:
<style name="categoriesCardViewButtons"> <item name="android:layout_width">80dp</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_marginLeft">10dp</item> <item name="cardCornerRadius">8dp</item> <item name="cardElevation">5dp</item> <item name="cardBackgroundColor">@color/grey_ultra_light</item> <item name="android:paddingBottom">@dimen/l1LayoutPaddingB</item> </style>
如果在包含样式的模块 (即使在使用卡片视图的模块中具有依赖关系)的Gradle依赖项(在Android Studio中)中没有CardView,则会发生此错误。 在这种情况下,只需添加
compile 'com.android.support:cardview-v7:22.2.1'
(或其他版本)为包含themes.xml或styles.xml的模块build.gradle
。
然后,你不需要在你的风格上设置父级,也不需要命名空间前缀,但可以按照tsik的答案中的例子,所以你只需要
<style name="myStyle"> <item name="cardCornerRadius">8dp</item> </style>
这段代码运行良好
<style name="MyCardView" parent="CardView"> <item name="cardUseCompatPadding">true</item> <item name="cardCornerRadius">@dimen/hei_standard_8dp</item> <item name="cardBackgroundColor">@color/bg_item_list_alphabet</item> </style>
注意:parent =“CardView”