gpt4 book ai didi

Android XML 布局文件和命名空间

转载 作者:IT老高 更新时间:2023-10-28 23:15:09 25 4
gpt4 key购买 nike

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

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

元素示例:

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" />
  1. 为什么使用 android 前缀而不是像 xmlns="http... 那样省略它?
  2. 为什么前缀只用在属性中而不用在元素中?

最佳答案

有趣的问题!确实感觉有点怪。

  1. Google 的设计选择是在命名空间上尽可能严格以在编译时处理错误。
  2. 在元素上不使用前缀,因为这些代表 Java 类:com.android.widget.TextView(com.android.widget.* 总是可以被截断)。此类的 java 命名空间将在编译时自动解析,因此这里不欢迎代表完全限定的 java 命名空间的 xml 命名空间。但是属性可以映射到 Element 的任何继承的 java 类。因此,属性上的命名空间允许继承。

这样做主要是因为布局描述了 Java 对象,而 Google 在这里使用 XML 命名空间机制来帮助将布局与 Java 对象映射。因此,Java 命名空间世界和 XML 命名空间世界之间存在冲突。它还允许我们开发人员对元素进行子类化,添加我们自己的属性,而不必担心下一个版本的平台可能会添加同名的属性。

请参阅 Dianne Hackborn 对这篇博文的两条回复,他是一位在 google 工作的知名 android 工程师:http://www.elharo.com/blog/software-development/xml/2008/09/16/android-xml-weirdness/

关于Android XML 布局文件和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5404560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com