在样式中使用 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:<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>
你拯救了这一天!而要在本地定义的是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 命名空间的主要内容,如果未能解决你的问题,请参考以下文章