【问题标题】:Is it possible to add a custom property into a style in an android resource?是否可以将自定义属性添加到 android 资源中的样式中?
【发布时间】:2011-08-29 12:54:28
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

  • 所选答案错误/不完整。您可以在样式文件中设置自定义 UI 元素的样式,自己完成此操作...例如查看我的答案
  • 请查看here,这将解决您的问题。
  • 我在 SO 上发现了同样的问题,这解决了我的问题,here.

标签: android styles


【解决方案1】:

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 命名空间,但您不能明确指定此命名空间。

【讨论】:

  • 你说得对,我只需要删除样式文件中的命名空间,就可以了。但奇怪的是在普通布局文件中需要它,而不是在资源文件中。谢谢。
  • 这适用于新的 CardView 小部件,例如:只需删除命名空间,像 16dp 这样的样式项即可编译并运行良好。
【解决方案2】:

你可以根据你的命名空间来定义样式,我自己用过

<style name="whatever">
    <item name="YourPackage.YourSubPackage:parametername">@drawable_or_anything/bla</item>
</style>

【讨论】:

  • 对于 : 之前的文本,使用清单中定义的任何命名空间作为“包”
  • 这对我不起作用。我的自定义样式属性是一个枚举。
  • 您尝试完全量化枚举以及属性?
  • 可以用来引用库视图的属性吗?
猜你喜欢
  • 1970-01-01
  • 2013-11-11
  • 2015-03-06
  • 2011-09-20
  • 2017-12-18
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
相关资源
最近更新 更多