为什么在 xml 布局文件中需要这一行?
xmlns:android="http://schemas.android.com/apk/res/android"
在 XML 中,xmlns 声明了一个命名空间:
<LinearLayout android:id> </LinearLayout>
Xml 不调用 android:id,而是使用 http://schemas.android.com/apk/res/android:id使其惟一。通常这个页面不存在(它是一个 URI,而不是一个 URL) ,但有时它是一个 URL,用于解释所使用的名称空间。
android:id
名称空间的用法与 Java 应用程序中的包名几乎相同。
这里 是一个解释。
统一资源标志符(URI) 统一资源标志符(URI)是一个字符串 识别互联网资源。 最常见的 URI 是统一资源定位符(URL) 标识一个互联网域名地址 URI 是通用资源名(URN)。
统一资源标志符(URI)
统一资源标志符(URI)是一个字符串 识别互联网资源。
最常见的 URI 是统一资源定位符(URL) 标识一个互联网域名地址 URI 是通用资源名(URN)。
在我们的示例中,我们将只使用 URL。
Xmlns 引用 XML 名称空间
在 XML 中使用前缀时,必须为前缀定义所谓的命名空间。名称空间由元素开始标记中的 xmlns 属性定义。命名空间声明具有以下语法。前缀 = “ URI”。
注意 : 解析器不使用名称空间 URI 查找信息。
其目的是为命名空间提供一个唯一的名称。然而,公司经常使用名称空间作为指向包含名称空间信息的网页的指针。
xmlns:android 定义 Android 名称空间。此属性应始终设置为“ http://schemas.android.com/apk/res/android”。
xmlns:android
定义 Android 名称空间。此属性应始终设置为“ http://schemas.android.com/apk/res/android”。
http://schemas.android.com/apk/res/android
请参阅 https://developer.android.com/guide/topics/manifest/manifest-element#nspace
xmlns:android这是在 Android 中定义 Android 名称空间的开始标记。这是由 android 谷歌开发者定义的标准惯例。当使用和布局默认值或自定义时,则必须使用此命名空间。
从 <manifest>元素文档。
<manifest>
为了理解为什么 xmlns:android=“http://schemas.android.com/apk/res/android”必须是布局 xml 文件中的第一个,我们将通过一个示例来理解组件
xmlns:android=“http://schemas.android.com/apk/res/android”
Sample : :
Sample
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/container" > </FrameLayout>
统一资源指标(URI) :
例: http://schemas.android.com/apk/res/android:id是这里的 URI
http://schemas.android.com/apk/res/android:id
XML 命名空间 :
textview
这只是 XML 名称空间声明。我们使用这个名称空间是为了指定下面列出的属性属于 Android。因此,他们从“ 机器人:”开始
您实际上可以创建自己的自定义属性。因此,为了防止两个属性命名相同但行为不同的名称冲突,我们添加前缀“ 机器人:”来表示这些属性是 Android 属性。
因此,此 Name Space 声明必须包含在 XML 文件根视图的开始标记中。
在 XML 中,元素名由开发人员定义。当试图混合来自不同 XML 应用程序的 XML 文档时,这通常会导致冲突。用户或 XML 应用程序将不知道如何处理这些差异。使用名称前缀可以很容易地避免 XML 中的名称冲突。在 XML 中使用前缀时,必须定义前缀的命名空间。名称空间可以由元素开始标记中的 xmlns 属性定义。命名空间声明具有以下语法。前缀 = “ URI”。
用外行人的话说:
没有 xmlns: android = “ http://schemas.android.com/apk/res/android”android 相关标记将无法在我们的布局的 xml 文档中识别。
它是一个 XML 名称空间声明,目的是指定视图组中与其减速相关的属性是与 android 相关的。
这是 xmlns 的形式: android = “@+/id”
android:layout_width="wrap_content" android:text="Hello World!"
另一个是
xmlns:app="http://schemas.android.com/apk/res-auto"
其格式为 xmlns: app = “@+/id”,其用法如下
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent"
我认为名称空间很清楚,因为我们可以创建自己的属性,如果用户指定的属性与 Android 的属性相同,就可以避免名称空间的冲突。
Xmlns : 是 xml 名称空间 而 网址:“ http://schemas.android.com/apk/res/android”只是
XSD 是[ XML 模式定义] : 用于定义 XML 文件的规则。
例如:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="4dp" android:hint="User Name" /> </LinearLayout>
让我解释一下 什么样的规则?。
这类规则在 XML XSD 中定义: “ http://schemas.android.com/apk/res/android”
有点晚了,但我希望这能帮到你。
上面的答案中没有重点,
当我们在 xml 文件的根目录中声明 xmlns: android = “ http://schemas.android.com/apk/res/android”时,将导入已经附加到这个名称空间的所有属性和标记。
所以下次我们给 android 的时候: 会出现自动完成列表。