样式 CardView 组

Styling CardView groups

为了一个小工具,我要写一个Android app。对可移植性没有要求,当应用程序仅在 android 版本 6 或更高版本上运行时就足够了。

我希望将对话框元素分组到 CardView 中,并且我希望有一些合理的布局(间距、颜色等)。有没有一种方法可以使用主题、标准布局、样式等,而无需应用 "android:padding"、"card_view:cardElevation" 等。每个 CardView 的属性?

如果无法使用一些已经存在的默认值,我可以使用样式。当我使用样式时(遵循 Google 的 "Styles and Themes" API 指南),当我将 CardView 定义中的某些属性从布局 xml 移动到风格 xml。对于我移至 xml 样式且以 "android:" 开头的属性,没有错误。对于其他属性,我得到一个“找不到与给定名称错误匹配的资源”。

<style name="CardGroups">
    <item name="xmlns:card_view">"http://schemas.android.com/apk/res-auto"</item>
    <item name="card_view:cardElevation">3dp</item>
    <item name="android:layout_margin">3dp</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
</style>

结果:Error:(20, 5) No resource found that matches the given name: attr 'card_view:cardElevation'.

您说得对,样式是为多个视图提供一组通用属性的方式。

您不应在样式定义中使用自定义命名空间。对于库提供的自定义属性(例如cardElevation),您只需不提供命名空间即可。

因此您的样式应如下所示:

<style name="CardGroups">
    <item name="cardElevation">3dp</item>
    <item name="android:layout_margin">3dp</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
</style>