以风格使用 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>
我将举个例子来说明更重要的一点。
假设我的应用程序有许多 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>