使用Xamarin构建Android应用遇XML解析错误,求排查解决
解决Xamarin Android XML解析错误:not well-formed和unbound prefix
瞅了眼你的XML代码,问题都是XML结构的基础疏漏导致的,咱们一步步理清楚:
错误原因拆解
- 「not well-formed (invalid token)」错误:你把
GridLayout的命名空间属性(那些xmlns:开头的行)直接写在了起始标签外面,而且<GridLayout>标签本身没加闭合的>,这直接把XML的结构搞崩了,解析器根本读不懂。 - 「unbound prefix」错误:因为命名空间没正确定义在
GridLayout标签里,解析器识别不了android:这个前缀,自然会报未绑定前缀的错。 - 还有个小细节:按钮的尺寸属性应该用
android:layout_height和android:layout_width,而非直接android:height/android:width——后者不是布局中设置控件尺寸的正确属性。
修正后的完整代码
<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:minWidth="25px" android:minHeight="25px" android:layout_width="match_parent" android:layout_height="fill_parent" android:id="@+id/gridLayout1" android:paddingLeft="40dp" android:alignmentMode="alignMargins" android:columnCount="3" android:rowCount="20"> <Button android:text="Button" android:id="@+id/button1" android:layout_height="100dp" android:layout_width="100dp" /> <Button android:text="Button" android:id="@+id/button2" android:layout_height="100dp" android:layout_width="100dp" /> <Button android:text="Button" android:id="@+id/button3" android:layout_height="100dp" android:layout_width="100dp" /> <Button android:text="Button" android:id="@+id/button4" android:layout_height="100dp" android:layout_width="100dp" /> <Button android:text="Button" android:id="@+id/button5" android:layout_height="100dp" android:layout_width="100dp" /> <Button android:text="Button" android:id="@+id/button6" android:layout_height="100dp" android:layout_width="100dp" /> <Button android:text="Button" android:id="@+id/button7" android:layout_height="100dp" android:layout_width="100dp" /> <Button android:text="Button" android:id="@+id/button8" android:layout_height="100dp" android:layout_width="100dp" /> <Button android:text="Button" android:id="@+id/button9" android:layout_height="100dp" android:layout_width="100dp" /> <Button android:text="Button" android:id="@+id/button10" android:layout_height="100dp" android:layout_width="100dp" /> </GridLayout>
额外优化说明
我还把android:paddingLeft="40"改成了40dp,按钮尺寸也加了dp后缀——在Android布局里用dp作为尺寸单位,能更好适配不同分辨率的设备,这是规范的写法。
把代码替换进去,应该就能正常解析运行了!
内容的提问来源于stack exchange,提问作者Stratos Eftychiadis
相关产品推荐
相关产品推荐

