我正在尝试从XML资源文件中读取AttributeSet。 相关代码如下:
//This happens inside an Activity
Resources r = getResources();
XmlResourceParser parser = r.getXml(R.layout.testcameraoverlay);
AttributeSet as = Xml.asAttributeSet(parser);
int count = as.getAttributeCount(); //count is 0!!??
count == 0
,因此Android根本没有阅读任何属性!
XML文件(R.layout.testcameraoverlay
):
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:text="@string/app_name" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content">
</TextView>
为什么我不能读取属性?
答案 0 :(得分:16)
问题是对解析器功能的误解。行之后:
XmlResourceParser parser = r.getXml(R.layout.testcameraoverlay);
解析器位于文档的开头并且尚未读取任何元素,因此没有属性集,因为属性当然始终相对于当前元素。所以为了解决这个问题,我必须执行以下操作,迭代元素直到我进入“TextView”:
AttributeSet as = null;
Resources r = getResources();
XmlResourceParser parser = r.getLayout(R.layout.testcameraoverlay);
int state = 0;
do {
try {
state = parser.next();
} catch (XmlPullParserException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
if (state == XmlPullParser.START_TAG) {
if (parser.getName().equals("TextView")) {
as = Xml.asAttributeSet(parser);
break;
}
}
} while(state != XmlPullParser.END_DOCUMENT);
答案 1 :(得分:0)
如果我理解正确,您需要阅读 TextView 中的属性,例如 TextView 中的文字或ID等等?
我会这样做:
TextView text_res = (TextView) findViewById(R.id.TextView01);
String text_inTextView;
String id_fromTextView;
text_inTextView = text_res.getText();
id_fromTextView = String.valueOf(text_res.getId());
依旧......
我希望这是你需要的。