Android XML文件中的@、?、@+的该怎么理解?

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技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • asp.net(C#) Xml操作(增删改查)练习

    接下来我将为你提供一份ASP.NET(C#)XML操作的完整攻略,包括XML的增删改查。在本攻略中,我们将使用C#的常见类库和语法来实现XML数据的操作。 准备工作 在开始编写程序之前,我们需要确保已经安装好.NET开发环境。同时,需要在Visual Studio中新建一个ASP.NET项目,名为“XmlExercise”,并在项目中添加一个XML文件,文件…

    html 2023年5月30日
    00
  • FluentMybatis实现mybatis动态sql拼装和fluent api语法

    我来为你讲解“FluentMybatis实现mybatis动态sql拼装和fluent api语法”的攻略。 1. 什么是FluentMybatis FluentMybatis 是一款 Mybatis 增强工具库,使 Mybatis 易用,优雅,高效。它封装了一系列的 API,通过 Fluent (流畅的) 针对 Mybatis XML SQL 进行二次封装…

    html 2023年5月30日
    00
  • Ubuntu 系统中文显示乱码的问题解决

    下面是Ubuntu系统中文显示乱码的问题解决攻略: 问题描述 在Ubuntu系统中,有时候我们会遇到中文显示乱码的问题,这主要是由于系统默认编码与文件编码不一致所导致的。 解决方法 解决这个问题,需要我们对系统中的一些配置进行调整,主要有以下两种方法: 方法一:修改locale配置文件 打开终端,输入以下命令查看当前系统的locale设置: locale 如…

    html 2023年5月31日
    00
  • 巧妙mybatis避免Where 空条件的尴尬

    针对“巧妙mybatis避免Where 空条件的尴尬”的问题,我将为您提供以下完整攻略。 什么是Where空条件的尴尬? 在使用Mybatis进行条件查询时,如果某一个或多个查询条件传入的值为空,那么在拼接SQL语句时就会出现WHERE后面没有任何条件的情况,这样不仅会对查询性能造成一定的影响,还降低了查询的准确性。 如何巧妙避免Where空条件的尴尬? 为…

    html 2023年5月30日
    00
  • Win10 10125中文语言包安装出现乱码的解决方法

    Win10 10125中文语言包安装出现乱码的解决方法可能有多种,我给您提供一种比较常见的解决方法。具体操作步骤如下: 步骤一:修改系统区域设置 打开控制面板->时钟和区域->区域->管理->更改系统区域设置,将“语言选项”中的“当前系统区域”设置为中文(或选择您需要的语言)。 步骤二:安装中文语言包 进入Windows设置->…

    html 2023年5月31日
    00
  • OpenXml读取word内容的实例

    OpenXml读取Word内容的实例攻略 什么是OpenXml OpenXml是一种用于创建和修改Microsoft Office文档的机制,其核心为XML(eXtensible Markup Language),通过一系列的标签、属性对Office文档的结构和格式进行描述。OpenXml不仅能改善Office应用程序的稳定性和性能,也能提高用户的生产效率。…

    html 2023年5月30日
    00
  • 详解XML中的代码注释书写方法

    下面是详解“详解XML中的代码注释书写方法”的完整攻略。 标准XML代码注释格式 在XML中,我们使用<!–和–>进行注释。这两个符号之间的内容都会被视为注释,在XML解析时会被忽略。 例如,在下面的示例中,我们使用XML注释来描述XML文件的版本、作者和创建时间: <?xml version="1.0" encod…

    html 2023年5月30日
    00
  • HTML属性的概念和使用

    HTML属性是在HTML标签中定义的特性,用于控制标签的行为和外观。在HTML中,使用属性为HTML元素添加各种特性,以控制它们的行为和样式。HTML属性按照标准HTML规范来定义,通常是成对出现的,包含属性名和属性值两部分。 以下是HTML属性的使用攻略和给出代码示例: 基本属性的使用 最常用的属性是id和class,id应该是唯一的,在文档中只能出现一次…

    Web开发基础 2023年3月15日
    00
合作推广
合作推广
分享本页
返回顶部