解析XML时,未绑定前缀的含义是什么?

时间:2011-06-13 10:35:20

标签: android-layout

我在我的Android应用程序中为自定义小部件制作了一个xml文件,错误是:

  

解析XML时出错:未绑定前缀

这是我的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.example.CustomWidget.MyView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"

        android:id="@+id/surface"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_weight="1"/>

</LinearLayout>

com.example.CustomWidget是我的软件包的名称,MyView是我创建自定义Widget的类文件的名称。

3 个答案:

答案 0 :(得分:24)

第二个XML命名空间是正确的,但它是自定义窗口小部件的命名空间,因此您需要适当地定义名称空间:

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

变为:

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

此后,您为自定义视图定义的所有自定义属性元素都将被称为:

mynamespace:my_defined_attribute="success"

而不是:

android:layout_width="fill_parent"

答案 1 :(得分:5)

在XML文件中,您必须添加一行:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.myproject.winedeals"
 .....
 .....>

答案 2 :(得分:0)

取出第二个XML命名空间声明:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
   <com.example.CustomWidget.MyView
     android:id="@+id/surface
     android:layout_width="fill_parent"
     android:layout_height="fill_parent" 
     android:layout_weight="1"
     android:focusable="true"
     android:focusableInTouchMode="true"  />
</LinearLayout>