在样式中使用App命名空间

时间:2016-09-05 18:36:54

标签: android android-layout android-theme android-styles

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

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

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

1 个答案:

答案 0 :(得分:131)

对于app: namespace,您无需指定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文件中设置它,您可以在其中定义浮动操作按钮。