以样式使用App名称空间


103

我将举一个例子来说明更大的意义。

想象一下,我的应用程序有许多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"
    >

有什么想法可以让我工作吗?


Answers:


228

对于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文件中进行设置。


太棒了!感谢您的帮助。较小的更正:您也可以layout_anchorGravity在样式页面上进行定义。它的工作方式为<item name="layout_anchorGravity">end|bottom</item>
Nouvel Travay

您节省了一天!在本地定义的是layout_anchor。+1!
Nouvel Travay
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.