poo*_*tle 6 android custom-controls android-layout android-xml declare-styleable
我有一个自定义视图(扩展视图组),我已经指定了一些在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>
Run Code Online (Sandbox Code Playgroud)
整数我可以很好,但最后一个 - rowlayout
我想用来引用我将按需膨胀的另一个布局文件.但我找不到在主布局文件中表达rowlayout属性的正确方法.我试过了:
lui:rowlayout="@layout/sensorvaluesdata">
Run Code Online (Sandbox Code Playgroud)
但这在运行时失败:
E/AndroidRuntime(22092):引起:java.lang.NumberFormatException:无法将'res/layout/sensorvaluesdata.xml'解析为整数
和
lui:rowlayout="?layout/sensorvaluesdata"
Run Code Online (Sandbox Code Playgroud)
哪个失败了
E/AndroidRuntime(22341):引起:java.lang.NumberFormatException:无法解析'?2130903043'为整数
这很有意思'因为它似乎已经将资源ID卡在那里,但也坚持?
在前面.
我的R.java文件确实有一个明智的行sensorvaluesdata
.
public static final class layout {
public static final int sensorvaluesdata=0x7f030003;
}
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
(我可以将信息硬编码到java源代码中,并且工作正常....
View vx = li.inflate(R.layout.sensorvaluesdata, this, false);
Run Code Online (Sandbox Code Playgroud)
只是为别人添加更多背景.在代码中使用这样的东西
LinearLayout ViewContainer=(LinearLayout) (LayoutInflater.from(context)).inflate(
attributes.getResourceId(
R.styleable.[styleableName]_[attributeName],
R.layout.[defaultValue]),
null);
Run Code Online (Sandbox Code Playgroud)
在您的可设置名称下的xml属性中...
<attr name="layout" format="reference"/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6465 次 |
最近记录: |