6

我有一个自定义视图(即延伸的ViewGroup)和我已指定在attrs.xml ....Android自定义布局属性“引用属性”格式?

<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):java.lang.NumberFormatException:无法解析“RES /布局/ sensorvaluesdata所致。 XML”作为整数

lui:rowlayout="?layout/sensorvaluesdata" 

WHI CH失败

E/AndroidRuntime(22341):java.lang.NumberFormatException:由造成无法解析为整数

这是有趣的“因为它似乎已经卡住了'2130903043?资源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); 
+3

嗯,这是奇怪的,再次尝试这个刚才和所有的工作 好。我已经检查过,看起来完全一样,在原始文章之前,我已经完成了几次这个项目的清理工作。 我只能假设Eclipse有一个不稳定的时刻 - 谢谢eclipse /) – pootle 2012-03-04 15:17:43

回答

5

我想补充别人多一点背景。在代码中使用这样的事情

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

在XML下你设置样式的name属性...

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