为什么我只需要在某些xml文件中声明android命名空间?

时间:2015-10-11 08:05:51

标签: android xml

我读到了关于XML命名空间的内容,我得知它们用于避免名称冲突,但我想问一些对我来说很奇怪的事情:

  1. 为什么我们只在布局和android清单中声明android命名空间,而不是在values目录中声明那些文件?
  2. 为什么我们会这样......

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent">
    
        <EditText android:layout_height="fill_parent"
                  android:layout_width="fill_parent"
                  android:id="@+id/eventArea"/>
    
    </LinearLayout>
    
  3. 而不是这样:

    <android:LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                          android:layout_width="fill_parent"
                          android:layout_height="fill_parent">
    
        <android:EditText 
                         android:layout_height="fill_parent" ... />
    
    </android:LinearLayout>
    

    或者像这样:

    <LinearLayout xmlns="http://schemas.android.com/apk/res/android"
                          layout_width="fill_parent"
                          layout_height="fill_parent">
    
        <EditText 
                         layout_height="fill_parent" ... />
    
    </LinearLayout>
    

1 个答案:

答案 0 :(得分:0)

xmlns表示命名空间,而不是调用android:id来调用标识资源名称的Uniform Resource Indicator(URI)。 例如

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

当您调用URI时,它为linearlayout提供了唯一的标识。

至于documentation

  

的xmlns:机器人

     

定义Android命名空间。应始终将此属性设置为   &#34; http://schemas.android.com/apk/res/android&#34;

我猜是因为这是谷歌在编译时处理错误的设计选择,并且具有来自其他android:id的唯一名称。