Android XML布局文件和名称空间

Android XML布局文件和名称空间,android,xml,Android,Xml,Android布局在XML中定义,根元素中声明了此命名空间: xmlns:android="http://schemas.android.com/apk/res/android" 元素的示例: <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> 为什么要使用android前缀,而不是像xmlns=“http…那样匹配它 为什么前缀只在属性中使用而不在元素中使用

Android布局在XML中定义,根元素中声明了此命名空间:

xmlns:android="http://schemas.android.com/apk/res/android"
元素的示例:

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" />

  • 为什么要使用
    android
    前缀,而不是像
    xmlns=“http…
    那样匹配它
  • 为什么前缀只在属性中使用而不在元素中使用

  • 有意思的问题!感觉有点奇怪

  • 谷歌的设计选择是在名称空间上尽可能严格,以便在编译时处理错误
  • 前缀不用于元素,因为这些代表Java类:
    com.android.widget.TextView
    com.android.widget.*
    始终可以被截断)。此类的java命名空间将在编译时自动解析,因此此处不欢迎使用表示完全限定java命名空间的xml命名空间。但属性可以映射到元素的任何继承java类。因此,属性上的命名空间允许继承
  • 这样做主要是因为布局描述Java对象,而Google在这里使用XML名称空间机制来帮助将布局映射到Java对象。因此Java名称空间世界和XML名称空间世界之间存在冲突。 它还允许我们开发人员对元素进行子类化,添加我们自己的属性,而不用担心平台的下一个版本可能会添加具有相同名称的属性

    请参阅Dianne Hackborn对这篇博文的两条回复,她是谷歌著名的安卓工程师: