我在android视图中经常出现问题,错误解析XML:第2行未绑定前缀。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@+id/myScrollLayout"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:layout_height="wrap_content" android:layout_width="fill_parent"
android:text="Family" android:id="@+id/Family"
android:textSize="16px" android:padding="5px"
android:textStyle="bold" android:gravity="center_horizontal">
</TextView>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical" android:scrollbars="vertical">
<LinearLayout android:orientation="vertical" android:id="@+id/myMainLayout"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</LinearLayout>
</ScrollView>
</LinearLayout>
对于新手和像我这样不了解XML的人,我将多讲一些内容。
上面的答案非常好,但是一般的答案是您需要为config.xml文件中使用的任何名称空间设置一个名称空间。
翻译:任何XML标记名都是带有名称空间的标记,其中blah是名称空间,fubar是XML标记。名称空间允许您使用许多不同的工具来解释带有自己标记名称的XML。例如,Intel XDK使用的命名空间为intelxdk, android使用的命名空间为android。因此,您需要以下名称空间,否则构建会引发流血(即解析XML错误:未绑定的前缀),这将被翻译为:您使用了一个名称空间,但没有定义它。
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:intelxdk="http://xdk.intel.com/ns/v1"
好吧,这里有很多解决方案,但实际上没有解释问题的根本原因,所以我们开始:
当你看到像android:layout_width="match_parent"这样的属性时,android部分是前缀,这里属性的格式是prefix:NAME="VALUE"。在XML中,命名空间和前缀是避免命名冲突的方法,例如,我们可以有两个具有相同名称但不同前缀的不同属性,如:a:a="val"和b:a="val"。
要使用android或app或任何其他前缀,您应该使用XMLNS属性定义一个名称空间。
所以如果你有这个问题,只要找到没有定义名称空间的前缀,如果你有工具:…你应该添加工具命名空间,如果你有app:…属性,您应该将xmlns:app="http://schemas.android.com/apk/res-auto"添加到根元素
进一步阅读:
XML命名空间简单解释
W3中的XML命名空间
除了所有这些,还有一个场景,这个错误发生-
当你或你的库项目定义自定义属性int attrx .xml,你使用这些属性在你的布局文件没有定义命名空间。
通常我们在布局文件的头文件中使用这个命名空间定义。
xmlns:android="http://schemas.android.com/apk/res/android"
然后确保文件中的所有属性都以
android:ATTRIBUTE-NAME
你需要识别你的一些属性是否以android:ATTRIBUTE-NAME以外的东西开始
temp:ATTRIBUTE-NAME
在本例中,您还将这个“temp”作为名称空间,通常包括-
xmlns:temp="http://schemas.android.com/apk/res-auto"