什么是XML属性xmlns:app?

Pi *_* Pi 9 android android-xml

XML适用于:

xmlns:app="http://schemas.android.com/apk/res-auto"
Run Code Online (Sandbox Code Playgroud)

但是看不到最大字符

xmlns:app="http://schemas.android.com/tools"
Run Code Online (Sandbox Code Playgroud)

这是由Android Studio auto完成的.

这是我的XML:

<com.rengwuxian.materialedittext.MaterialEditText
    android:id="@+id/remark_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp"
    app:met_maxCharacters="20"
    app:met_baseColor="@color/black"
    app:met_primaryColor="@color/white" />
Run Code Online (Sandbox Code Playgroud)

Moh*_*one 9

Xmlns代表'XML Namespace'

  • ':'之后的部分是命名空间的前缀
  • '='后面的部分是名称空间URI(他的部分的正确名称实际上是"名称空间名称").

(有关详细信息,请参阅https://en.wikipedia.org/wiki/XML_namespace)

命名空间'schemas.android.com/tools'用于指定Android Studio构建应用程序的选项,并且不包含在最终的应用程序包中

命名空间'schemas.android.com/apk/res-auto'用于所有自定义属性 - 在库或代码中定义.有关详情,请参阅此答案.

请注意,任何前缀都可用于命名空间,对于schemas.android.com/apk/res-auto,不必使用"app".但是在文档中定义自定义属性时必须使用相同的前缀,否则将显示错误.

因此,因为met_maxCharacters是一个自定义属性,所以在使用'schemas.android.com/apk/res-auto'命名空间时显示,而不是
'schemas.android.com/tools'

  • 这两个(/ tools和/ apk/res-auto)用于不同的目的:/ tools用于构建应用程序的选项,并且不是应用程序本身的一部分,并且在apk中被删除./ apk/res-auto适用于应用程序中使用的自定义属性 (2认同)
  • @MohanNoone或者您可以将其简化为:命名空间`/ tools`只能由GUI或设计工具理解.虽然apk和设计工具都理解命名空间`/ apk/res-auto`. (2认同)