Android 布局中的 xmlns 属性

xmlns attributes in Android layouts

我精通 Java,但不太熟悉 XML。在我的许多 layout/menu 文件中,我有这些行:

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"

有时我拥有所有这些,有时只是一些组合。有人可以对这三行进行解释吗?在哪些情况下我们应该包括每一个?到目前为止,我只是在 Android Studio 提示我时添加它们,但我想了解用例。谢谢!

Could somebody give an explanation towards these three lines?

每个声明一个不同的 XML 命名空间(分别为 androidapptools)。

Under which scenarios should we include each one?

如果您的 XML 文件具有一个或多个前缀为 android: 的属性,您需要声明 android 命名空间。许多 XML 文件将具有这些,来自框架定义的运行时属性。

如果您的 XML 文件具有一个或多个前缀为 app: 的属性,您需要声明 app 命名空间。一些布局和菜单资源文件将具有这些,来自库定义的属性。

如果您的 XML 文件具有一个或多个前缀为 tools: 的属性,您需要声明 tools 命名空间。很少有资源文件会有这些,来自用于帮助构建工具了解要做什么的属性。