在样式中使用 App 命名空间

Posted

技术标签:

【中文标题】在样式中使用 App 命名空间【英文标题】:Using App namespace in style 【发布时间】:2017-01-13 03:31:23 【问题描述】:

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

想象一下我的应用有许多 FloatingActionButton。因此,我想创建一种样式并重用它。所以我做了以下事情:

<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"
    >

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

【问题讨论】:

相关:***.com/questions/6860886/… 【参考方案1】:

对于app 命名空间,您无需指定app:&lt;property name&gt;。只需&lt;property name&gt; 就足够了。

例如

<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。它的工作方式为&lt;item name="layout_anchorGravity"&gt;end|bottom&lt;/item&gt; 你拯救了这一天!而要在本地定义的是layout_anchor。 +1!【参考方案2】:

不用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>

【讨论】:

以上是关于在样式中使用 App 命名空间的主要内容,如果未能解决你的问题,请参考以下文章

Django命名空间app_name和namespace

在使用模块 xlsx 样式时找不到命名空间 XLSX

在 Laravel 4 中使用命名空间

命名空间内的 JetBrains Rider 导入引用

如何在 Kubernetes 中切换命名空间

@namespace 属性——XML命名空间