我在我的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
的类文件的名称。
答案 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>