以某种方式使用 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="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"
>

有什么办法能让这个起作用吗?

20173 次浏览

对于 app名称空间,您不需要指定 app:<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>