Android自定义布局属性 "reference attribute"格式?

标签 android android-layout custom-controls android-xml declare-styleable

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

<declare-styleable name="datascope">
    <attr name="colcount" format="integer" />
    <attr name="titleheaderrows" format="integer" />
    <attr name="colheaderrows" format="integer" />
    <attr name="rowlayout" format="reference" />
</declare-styleable>

我可以很好地提取整数,但最后一个 - rowlayout - 我想用来引用我将按需扩充的进一步布局文件。但是我找不到在主布局文件中表达 rowlayout 属性的正确方法。 我试过:

lui:rowlayout="@layout/sensorvaluesdata">

但这在运行时失败了:

E/AndroidRuntime(22092): Caused by: java.lang.NumberFormatException: unable to parse 'res/layout/sensorvaluesdata.xml' as integer

lui:rowlayout="?layout/sensorvaluesdata"

失败了

E/AndroidRuntime(22341): Caused by: java.lang.NumberFormatException: unable to parse '?2130903043' as integer

这很有趣,因为它似乎在其中插入了资源 ID,但也在前面插入了 ?

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

public static final class layout {

    public static final int sensorvaluesdata=0x7f030003;

}

正确的做法是什么?

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

View vx = li.inflate(R.layout.sensorvaluesdata, this, false);

最佳答案

只是为其他人添加更多背景信息。在代码中使用这样的东西

LinearLayout ViewContainer=(LinearLayout) (LayoutInflater.from(context)).inflate(
    attributes.getResourceId(
        R.styleable.[styleableName]_[attributeName], 
        R.layout.[defaultValue]), 
    null);

在您的样式名称下的 xml 属性中...

<attr name="layout" format="reference"/>

关于Android自定义布局属性 "reference attribute"格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521792/

相关文章:

android - Android 中的 Google map 将纬度/经度初始化为 0.0(有时...)

android - 需要 Gradle 版本 2.2。当前版本是 4.4 错误

安卓/MonoDroid : Can I load a AXML file into a View?

android - Android 上具有客户端身份验证的 SSL/TLS http 客户端的运行时配置

java - 菜单项应指定标题,并且'='不是有效的资源名称字符

user-interface - 黑莓 TableView

android - 何时使用更多 Activity

java - Android Actionbar 左菜单

youtube - 嵌入式YouTube视频的自定义播放按钮

c# - resources.GetObject ("") 在哪里执行?