在xml布局文件中,为什么需要这行代码?
xmlns:android="http://schemas.android.com/apk/res/android"
在xml布局文件中,为什么需要这行代码?
xmlns:android="http://schemas.android.com/apk/res/android"
在XML中,xmlns声明一个命名空间。实际上,当你这样做时:
<LinearLayout android:id>
</LinearLayout>
与其调用android:id
,XML将使用http://schemas.android.com/apk/res/android:id来确保唯一性。通常此页面不存在(它是一个URI,而不是URL),但有时它是一个URL,解释所使用的命名空间。
命名空间在Java应用程序中与包名称几乎具有相同的用途。
这里有一个解释。
统一资源标识符(URI)
统一资源标识符(URI)是一串字符,用于标识Internet资源。
最常见的URI是统一资源定位符(URL),用于标识Internet域地址。另一种不太常见的URI是通用资源名称(URN)。
在我们的示例中,我们只使用URLs。
android:layout_width
而不是仅仅使用layout_width
? - Shashwat要理解为什么xmlns:android=“http://schemas.android.com/apk/res/android”
必须是布局xml文件中的第一个,我们需要通过一个例子来了解组件。
示例
::
<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>
例如:http://schemas.android.com/apk/res/android:id
是此处的URI。
xmlns:android
描述了android命名空间。textview
小部件与android的 textview
小部件相比,android 命名空间帮助区分我们的自定义 textview
小部件和android的 textview
小部件。xmlns是指XML命名空间
在XML中使用前缀时必须定义前缀的命名空间。命名空间由元素的开始标签中的xmlns属性定义。命名空间声明具有以下语法:xmlns:prefix = "URI"。
注意:解析器不使用命名空间URI查找信息。
目的是给命名空间赋予唯一名称。然而,通常公司将命名空间用作指向包含命名空间信息的网页的指针。
这只是XML名称空间声明。我们使用此名称空间来指定下面列出的属性属于Android。因此,它们以 "android:" 开始。
实际上,您可以创建自己的自定义属性。为了防止两个属性被命名为相同的名称但行为不同的情况,我们添加前缀 "android:" 来表示这些是Android属性。
因此,此名称空间声明必须包含在XML文件的根视图的开放标签中。
简单地说:
如果没有xmlns:android=”http://schemas.android.com/apk/res/android”,我们的布局的xml文档中将无法识别与android相关的标记。
xmlns:android
定义了Android命名空间。该属性应始终设置为"
http://schemas.android.com/apk/res/android
"。
参考https://developer.android.com/guide/topics/manifest/manifest-element#nspace
我认为使用命名空间可以使内容更清晰,因为我们可以创建自己的属性。如果用户指定的属性与Android的属性相同,则可以避免命名空间冲突。
xmlns:android
是在Android中定义android命名空间的开始标签。这是由安卓谷歌开发人员定义的标准约定。当您使用默认或自定义布局时,必须使用此命名空间。
定义了Android命名空间。此属性应始终设置为“
http://schemas.android.com/apk/res/android
”。
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:text="Hello World!"
另一个 xmlns 是
xmlns:app="http://schemas.android.com/apk/res-auto"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"