样式 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>
为了一个小工具,我要写一个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>