gpt4 book ai didi

android - 是否可以将自定义属性添加到 android 资源的样式中?

转载 作者:IT老高 更新时间:2023-10-28 22:20:45 25 4
gpt4 key购买 nike

我在我的项目中使用了 View 流组件,它允许开发人员覆盖一些属性,例如:

<org.taptwo.android.widget.TitleFlowIndicator
...
app:footerTriangleHeight="0dip"
... />

我正在将此组件重用到多个布局中,并且我想将属性放入一个样式中。但是当我这样做时,解析器会显示 Error: No resource found that match the given name: attr 'app:footerTriangleHeight',即使我在样式文件中添加了命名空间。

有没有办法在android中做到这一点?

谢谢。

最佳答案

Android 应用程序

如果您不使用 Android 库,那么您可以执行以下操作:

  1. 定义自定义样式属性(我猜你已经这样做了)。
  2. 不要在样式项中使用命名空间前缀(命名空间默认为当前应用的命名空间)。

例子:

attrs.xml 中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="testAttr" format="string"/>
</resources>

styles.xml 中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TestStyle" >
<item name="testAttr">asdf</item>
</style>
</resources>

Android 库

如果自定义属性来自 Android 库,您仍然可以使用描述的方法。理论上它应该可以工作,因为 Android 库的命名空间与应用程序的命名空间相同(在构建期间从 aapt 工具的角度来看)。但我自己没有测试过。


如果您指定命名空间,它将显示错误。据我所知,样式不支持 xml 命名空间。所以这将失败:

styles.xml 中:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:app="http://schemas.android.com/apk/res/app.package.name">
<style name="TestStyle" >
<item name="app:testAttr">asdf</item>
</style>
</resources>

解析器自动默认为当前应用的 AndroidManifest 命名空间,但您不能明确指定此命名空间。

关于android - 是否可以将自定义属性添加到 android 资源的样式中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7230358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com