如何将CardView属性放入样式中?

Ale*_*tin 49 android android-cardview

我有:

在文件中build.gradle(依赖项)

dependencies {
    compile 'com.android.support:cardview-v7:21.0.+'
}
Run Code Online (Sandbox Code Playgroud)

在文件中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>
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨:

错误:找不到与给定名称匹配的资源:attr'card_view:cardCornerRadius'.

如何在样式中添加一些cardView属性?

kli*_*mat 119

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>
Run Code Online (Sandbox Code Playgroud)

  • VsMax确保你正在做<item name ="cardCornerRadius"> 4dp </ item>而不是<item name ="card_view:cardCornerRadius"> 4dp </ item> (14认同)

小智 17

要添加到mklimek的答案,您甚至不需要添加parent ="CardView"

只需避免使用cardView:前缀

而不是

    <item name="cardView:cardElevation">5dp</item>
Run Code Online (Sandbox Code Playgroud)

只是用

    <item name="cardElevation">5dp</item>
Run Code Online (Sandbox Code Playgroud)

所以我的完整样式代码是:

<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>
Run Code Online (Sandbox Code Playgroud)


sse*_*tor 6

如果您的gradle依赖项(在Android Studio中)中没有包含样式的模块的 CardView,则会发生此错误(即使您在使用卡视图的模块中具有依赖关系).在这种情况下,只需添加

compile 'com.android.support:cardview-v7:22.2.1'
Run Code Online (Sandbox Code Playgroud)

(或其他版本)to build.gradle包含themes.xml或styles.xml的模块.

然后,您不需要在您的样式上设置父级,也不需要名称空间前缀,但可以按照tsik的答案中的示例,所以您只需要的是

<style name="myStyle">
    <item name="cardCornerRadius">8dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)