309

我在 android 视图中经常遇到问题,Error parsing XML: unbound prefix on Line 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>
4

16 回答 16

569

发生这种情况的几个原因:

1) 您看到此错误的名称空间不正确,或属性中存在拼写错误。就像'xmlns'是错误的,应该是xmlns:android

2)第一个节点需要包含: xmlns:android="http://schemas.android.com/apk/res/android"

3) 如果您正在集成 AdMob,请检查自定义参数,例如ads:adSize,您需要

xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

4)如果您正在使用LinearLayout,您可能必须定义工具:

xmlns:tools="http://schemas.android.com/tools"

于 2010-02-08T12:03:46.730 回答
101

我将添加一个单独的答案,只是因为我在这里看不到它。Pentium10 要求的不是 100%,但我最终通过搜索找到了Error parsing XML: unbound prefix

原来我正在为 AdMob 广告使用自定义参数ads:adSize,但我没有添加

    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

到布局。一旦我添加它,它就很好用。

于 2012-12-16T08:18:03.950 回答
64

我有同样的问题。

确保前缀 (android:[whatever]) 拼写正确且书写正确。对于该行xmlns:android="http://schemas.android.com/apk/res/android" ,请确保您具有完整的前缀xmlns:android并且拼写正确。与任何其他前缀相同 - 确保它们拼写正确并具有android:[name]. 这就是解决我的问题的方法。

于 2010-09-20T06:54:49.147 回答
33

正如您所提到的,您需要指定正确的 namespace。您还会看到此错误,名称空间不正确。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:padding="10dip">

不管用。

改变:

xmlns="http://schemas.android.com/apk/res/android"

xmlns:android="http://schemas.android.com/apk/res/android"

错误消息是指以“android:”开头的所有内容,因为 XML 不知道“ android:”命名空间是什么。

xmlns:android定义它。

于 2010-02-08T12:46:09.740 回答
23

如果您使用未定义的前缀,则可能会发生此错误,例如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TabHost
    XYZ:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


</TabHost>

Android 编译器不知道 XYZ 是什么,因为它尚未定义。

在您的情况下,您应该将以下定义添加到 xml 文件的根节点。

xmlns:android="http://schemas.android.com/apk/res/android"

于 2011-12-08T07:42:52.510 回答
11

ViewPager Indicator的未绑定前缀错误:

以及 parentLayout 中的以下标题标签:

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"

还添加:

xmlns:app="http://schemas.android.com/apk/res-auto"

这对我有用。

于 2014-02-10T12:28:33.230 回答
9

对我来说,我在这里的第一行得到了“未绑定前缀”错误,尽管我在第四行拼错了 android。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
anrdoid:fillViewport="true"
>
于 2012-08-14T20:02:26.573 回答
7

我遇到了同样的问题,发现解决方案是将 android:tools 添加到第一个节点。在我的例子中,它是一个 LineraLayout:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:orientation="vertical">
于 2012-09-27T14:11:50.573 回答
3

我会为新手和像我这样不懂 XML 的人多介绍一些内容。

上面的答案相当不错,但一般的答案是您需要为 config.xml 文件中使用的任何命名空间提供命名空间。

翻译:任何具有命名空间的 XML 标记名称都是具有命名空间的标记,其中 blah 是命名空间,fubar 是 XML 标记。命名空间允许您使用许多不同的工具来解释具有自己标记名称的 XML。例如,英特尔 XDK 使用命名空间 intelxdk,而 android 使用 android。因此,您需要以下命名空间,否则构建会引发血液(即解析 XML 时出错:未绑定前缀),这将被翻译为:您使用了命名空间,但没有定义它。

  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:intelxdk="http://xdk.intel.com/ns/v1"
于 2014-12-24T06:41:19.980 回答
3

好的,这里有很多解决方案,但实际上并没有解释问题的根本原因,所以我们开始:

当您看到像part 是前缀这样android:layout_width="match_parent"的属性时android,这里的属性格式是PREFIX:NAME="VALUE". 在 XML 中,命名空间和前缀是避免命名冲突的方法,例如,我们可以有两个不同的属性,它们的名称相同但前缀不同,例如:a:a="val"b:a="val".

要使用前缀androidapp任何其他前缀,您应该使用xmlns属性定义命名空间。

因此,如果您遇到此问题,只需找到未定义命名空间的前缀,如果有tools:...,则应按照一些答案的建议添加工具命名空间,如果您有app:...属性,则应添加xmlns:app="http://schemas.android.com/apk/res-auto"到根元素

进一步阅读:

XML Namespaces 简单解释

W3 中的 XML 命名空间

于 2018-09-19T21:25:46.550 回答
2

如果您没有xmlns:mm正确包含此错误,通常会发生此错误,它通常发生在第一行代码中。

对我来说是..

xmlns:mm="http://millennialmedia.com/android/schema"

我在代码的第一行错过了

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:mm="http://millennialmedia.com/android/schema"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="50dp"
android:layout_marginBottom="50dp"
android:background="@android:color/transparent" >
于 2014-02-14T08:01:26.607 回答
1

在我的情况下,错误不是由上述任何 xml 命名空间问题引起的。相反,它是android:id属性的位置——它必须是特定元素声明中的第一项。

所以这:

<TextView android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:id="@+id/bottomtext" 
      android:singleLine="true" />

...需要像这样阅读:

<TextView android:id="@+id/bottomtext" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:singleLine="true" />
于 2012-07-15T03:23:01.753 回答
1

除此之外,还有一种情况会发生此错误-

当您或您的库项目定义自定义属性 int attr.xml 时,您在布局文件中使用这些属性而不定义 namespace 。

通常我们在布局文件的头文件中使用这个命名空间定义。

xmlns:android="http://schemas.android.com/apk/res/android"

然后确保文件中的所有属性都应以

android:ATTRIBUTE-NAME

如果您的某些属性不是以 android:ATTRIBUTE-NAME 以外的其他内容开头,您需要确定

temp:ATTRIBUTE-NAME

在这种情况下,您也可以将此“临时”作为名称空间,通常包括 -

xmlns:temp="http://schemas.android.com/apk/res-auto"
于 2014-12-10T05:54:59.837 回答
1

您只需要在您的根标签中添加适当的名称空间。xmlns:android="http://schemas.android.com/apk/res/android" Android 元素在这个命名空间中声明。它与导入类或包相同。

于 2016-06-30T07:00:40.850 回答
0

当我拼错 android 时,通常会发生这种情况 - 我只是输入 andorid 或类似的,而且乍一看并不明显,尤其是经过数小时的编程后,所以我只是一个一个地搜索“android”,看看搜索是否跳过了一个标签 - 如果是这样,那么我仔细看看,我看到错字在哪里。

于 2014-12-12T06:45:53.737 回答
0

我在使用时在 Xamarin 中遇到了这个错误

  <android.support.v7.widget.CardView  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content"  
    card_view:cardElevation="4dp"  
    card_view:cardCornerRadius="5dp"  
    card_view:cardUseCompatPadding="true">  
  </android.support.v7.widget.CardView>

在布局文件中,无需为 android.support.v7.widget.CardView 安装 nuget 包

安装适用的 nuget 包解决了这个问题。希望它有所帮助,我在列表中的任何地方都没有看到这个答案

于 2020-02-22T06:27:55.717 回答