以风格使用 App 命名空间

Using App namespace in style

我将举个例子来说明更重要的一点。

假设我的应用程序有许多 FloatingActionButtons。因此,我想创建一种样式并重复使用它。所以我做了以下事情:

<style name="FabStyle” parent ="Widget.Design.FloatingActionButton">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_margin">16dp</item>
    <item name="app:backgroundTint">@color/accent</item>
    <item name="app:layout_anchorGravity">end|bottom</item>
</style>

我遇到的问题是代码没有编译,因为它抱怨

Error:(40, 5) No resource found that matches the given name: attr 'app:backgroundTint'.

我尝试通过 resources 标签引入命名空间,但它不起作用

<resources
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >

有什么想法可以让它发挥作用吗?

对于 app 命名空间,您不需要指定 app:<property name><property name> 就够了。

例如

<style name="FabStyle" parent="Widget.Design.FloatingActionButton"> 
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_margin">16dp</item>
    <item name="backgroundTint">@color/accent</item>
    <item name="layout_anchorGravity">end|bottom</item>
</style>

对于 layout_anchorGravity,您需要在定义浮动操作按钮的 XML 文件中进行设置。

不用app

也可以直接使用属性
<style name="FabStyle” parent ="Widget.Design.FloatingActionButton">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_margin">16dp</item>
    <item name="backgroundTint">@color/accent</item>
    <item name="layout_anchorGravity">end|bottom</item>
</style>