XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言,主要应用于各种XML配置文件,例如Android中的布局文件、字符串资源等。
在 Android XML 文件中,我们有时会看到一些特殊符号,例如 @
、?
、@+
等,这些符号是用于引用资源的。
下面,我们来详细讲解这些符号的用法及含义:
@ 符号
@
符号用于引用已经定义好的资源,如布局文件中引用字符串资源、图片资源等。
语法格式为:
@[package:]type/name
具体说明如下:
package:
,可选项,表示资源所在的包名。如果不定义该属性,则默认引用当前应用程序的包名。type
,必选项,表示资源的类型,如 layout、drawable、string 等。name
,必选项,表示资源的名称,例如布局文件名称、图片文件名称、字符串名称等。
例如,在布局文件 activity_main.xml
中,我们可以引用字符串资源 app_name
,代码如下:
<TextView
...
android:text="@string/app_name"
...
/>
? 符号
?
符号用于引用属性值,可用于在不同配置下使用不同的属性值。
语法格式为:
?[package:]type/name
具体说明如下:
package:
,可选项,表示资源所在的包名。如果不定义该属性,则默认引用当前应用程序的包名。type
,必选项,表示资源的类型,如 attr、style 等。name
,必选项,表示属性的名称,例如 style、title 等。
例如,在样式文件 styles.xml
中,我们可以定义两个不同的样式:主题样式 AppTheme
和深色主题样式 AppTheme.Dark
。然后在布局文件中,可以通过 ?attr
引用不同的主题样式,代码如下:
<LinearLayout
...
android:background="?attr/colorPrimary"
...
/>
@+ 符号
@+
符号用于定义新的资源,并且可以在其他地方引用该资源。例如,在布局文件中定义一个新的字符串资源 hello_world
,代码如下:
<resources>
<string name="hello_world">Hello World!</string>
</resources>
然后,在布局文件中引用该字符串资源,使用 @string
即可:
<TextView
...
android:text="@string/hello_world"
...
/>
需要注意的是,如果在定义资源时使用 @
符号,那么只能在本布局文件中使用该资源,无法在其他布局文件中引用。例如,在以下布局文件中,@string/hello_world_new
无法在其他布局文件中引用:
<TextView
...
android:text="@string/hello_world_new"
...
/>
<resources>
<string name="hello_world_new">@string/hello_world</string>
</resources>
如果要在其他布局文件中引用该资源,应该使用 @+
符号定义该资源:
<resources>
<string name="hello_world_new">@string/hello_world</string>
</resources>
然后,在其他布局文件中使用 @string/hello_world_new
引用该资源。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android XML文件中的@、?、@+的该怎么理解? - Python技术站