在res-auto和com.package.name - android之间命名xml的区别

dav*_*vid 5 xml android

我见过自定义xml:

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/com.package.custom"
Run Code Online (Sandbox Code Playgroud)

这两个人之间有什么区别?

  1. 后者只是指向默认位置吗?
  2. 前者指向参考lib吗?

谢谢.

Xar*_*mer 10

如果我们在项目中添加新的自定义视图及其属性,则在布局的开头添加:

xmlns:custom="http://schemas.android.com/apk/res/your_main_app_package
Run Code Online (Sandbox Code Playgroud)

如果新的自定义视图位于链接到项目的库项目中,则添加以下内容:

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

注意:此问题已在ADT修订版17+中修复.对于任何服务或活动,请按如下方式声明命名空间:

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

后缀res-auto将在构建时替换为实际项目包,因此请确保设置属性名称以尽可能避免冲突.