问题标签 [declare-styleable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
17750 浏览

android - 声明样式和样式之间的区别

我已经开始在我的 android 应用程序中使用样式等,并且到目前为止我已经完成了所有工作。我非常了解指南的“风格”部分

但是,环顾四周,就像在这个线程中一样,我真的无法弄清楚两者之间的区别(declare-stylablestyle)。据我了解declare-styleable,获取其中指定的属性并将其指定为可样式化,然后根据需要从代码中对其进行更改。

但如果这是它真正的作用,那么在布局中定义属性不是更简单吗?或者声明一个指定它的样式?

0 投票
2 回答
86213 浏览

android - 在 Android 中声明可样式化的属性

关于declare-styleable标签的宝贵文档很少,我们可以通过它为组件声明自定义样式。我确实找到了标签属性的有效值列表。虽然这很好,但它并没有解释如何使用其中一些值。浏览attr.xml(标准属性的 Android 源代码),我发现您可以执行以下操作:formatattr

format属性显然可以设置为值的组合。据推测,该format属性有助于解析器解释实际的样式值。然后我在 attr.xml 中发现了这一点:

这两个似乎都为指示的样式声明了一组允许的值。

所以我有两个问题:

  1. enum可以采用一组值中的一个的样式属性与可以采用一组值的样式属性之间有什么区别flag
  2. 有谁知道关于如何declare-styleable工作的更好的文档(除了对 Android 源代码进行逆向工程)?
0 投票
6 回答
6078 浏览

android - Android库项目使用declare-styleable——如何编译?

我有一个自定义首选项控件,我在 values/attrs.xml 中定义了一些属性。只是为了集中讨论,这里有一个可以在 values/attrs.xml 中找到的属性示例:

要使用属性,您可以在要使用它的地方使用 xmlns 标记,它看起来像这样:

这就是问题所在:xmlns 定义引用了 LIBRARY 的包名,并且该资源在 LIBRARY 项目中编译得很好。但是,包含 Library 项目的 Android 项目具有不同的包名称,Android 会尝试合并所有资源。当它到达这个 xmlns 定义时,它会因为包含 Android 项目中的包名称不同而犹豫不决。

有人对在包含 Android 项目中仍然有效的库项目中使用 xmlns 引用有任何想法吗?

当他们考虑库时,declare-styleables 只是 Android 团队的疏忽吗?

0 投票
1 回答
296 浏览

android - 在 xml 中使用自定义 Android 视图类时,在 ADT for Eclipse 中丢失属性提示是否正常?

假设我创建了一个扩展 android.widget.RelativeLayout 的自定义类 MyView。然后我创建一个使用 MyView 的 xml 文件

我注意到,当我编写 xml 文件时,由于从 RelativeLayout 继承,我无法从 Eclipse 中获得预期的代码提示或完成。这是正常的吗?我尝试创建一个 styleable,看看这是否有助于 Eclipse 连接点。我将父属性设置为 SDK 的 attrs.xml 中的 RelativeLayout 样式(代码如下)。这没有任何效果。似乎 Eclipse 不知道除了 SDK 中的样式之外的样式。这个对吗?

非常感谢!

0 投票
1 回答
6857 浏览

android - Android自定义布局属性“引用属性”格式?

我有一个自定义视图(扩展视图组),并且我指定了一些在attrs.xml中定义的自定义属性....

我可以很好地拾取整数,但最后一个rowlayout- 我想用来引用另一个布局文件,我将根据需要进行扩展。但我找不到在主布局文件中表达 rowlayout 属性的正确方法。我努力了:

但这在运行时失败:

E/AndroidRuntime(22092):原因:java.lang.NumberFormatException:无法将“res/layout/sensorvaluesdata.xml”解析为整数

失败了

E/AndroidRuntime(22341):原因:java.lang.NumberFormatException:无法将“?2130903043”解析为整数

这很有趣,因为它似乎将资源 ID 卡在其中,但也将 a 卡?在了前面。

我的R.java文件确实有一个合理的sensorvaluesdata.

这样做的正确方法是什么?

(我可以将信息硬编码到java源代码中,它工作正常......

0 投票
1 回答
12128 浏览

android - 有人能解释一下这个例子中可声明样式的 XML 标记及其使用背后的理论吗?

我正在阅读“开始 Android 4 开发”,在第 5 章中讨论了GalleryImageVievs,并介绍了可声明样式的XML 标记,但没有解释其用途。我还试图在参考资料上找到一些信息,但没有运气。例如,我们有以下几点:

资源/值/attrs.xml

例子.java

我已经阅读了几次代码,但我真的不明白用一个仅具有name属性的单个attr子项定义这个可样式化 Gallery1的目的。你能帮我吗?这个galleryItemBackground是系统提供的还是我们定义的?我们在这段代码中做了什么?

预先感谢您的任何帮助!

0 投票
1 回答
9835 浏览

android - 使用样式和主题为自定义属性创建默认值

我有几个 custom View,我在其中创建了自定义样式属性,这些属性在 xml 布局中声明并在视图的构造函数期间读入。我的问题是,如果我在 xml 中定义布局时没有为所有自定义属性提供显式值,我如何使用样式和主题来获得将传递给我View的构造函数的默认值?

例如:

attrs.xml:

layout.xml(android:为简单起见,去掉了标签):

0 投票
3 回答
901 浏览

android - Eclipse 不再识别自定义属性?(安卓)

昨天,我的项目正在构建和运行良好。今天,Eclipse 决定不再识别我的自定义属性。我想不出任何我改变的东西会导致这种情况。我有大约 2 打包含自定义属性的 XML 布局,但它无法识别其中的任何一个。这是其中一种布局(在 res/layout 中):

这是我的属性文件(res/values/attrs.xml):

由于 XML 文件被视为有错误,因此不会生成 R,因此 IntPref.java 也有问题。在过去的 8 个小时里,我一直在为此扯头发,看不到我做错了什么。有什么建议么?

0 投票
1 回答
4979 浏览

android - 声明样式有什么意义?

假设我正在制作一些带有样式属性的新视图。我因此声明它们(这就是文档所说的这样做

但是,这不起作用,因为所有属性显然都在同一个命名空间中,并且我得到了错误Error: Attribute "direction" has already been defined

所以显然我必须将明显重复的属性移到这样的外部<declare-styleable>

但这提出了两个问题:

  1. 如果这行得通,那到底有什么意义<declare-styleable>
  2. 如果我希望属性在不同视图中表现不同怎么办?例如 ifBannerView的方向只能是upor down
0 投票
1 回答
233 浏览

android - 如果您可以直接从 AttributeSet 中读取,为什么需要声明样式?

我使用以下构造函数创建了一个自定义 View 子类:

可以看出,它从其 XML 属性中获取了一个自定义的“thingy”属性。这工作得很好,到目前为止我没有遇到任何问题。那么,为什么 Google 会告诉您在declare-styleablein res/values/attrs.xml(在此处讨论context.getTheme().obtainStyledAttributes()中定义自定义 View 的 XML 属性并通过调用(在此处讨论)来应用它们?