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日

相关文章

  • springmvc+shiro自定义过滤器的实现代码

    下面是“springmvc+shiro自定义过滤器的实现代码”的完整攻略: 一、前置知识 在开始本文的阅读之前,请确保您已经掌握了以下几个知识点: Spring MVC 框架的基本概念和使用方法; Shiro 框架的基本概念和使用方法; Spring MVC 和 Shiro 的集成方法。 如果您还不熟悉以上知识点,请先学习相关学习资料入门。 二、自定义过滤器…

    html 2023年5月31日
    00
  • 微信企业号怎么开通支付功能 微信企业号支付功能开通教程

    微信企业号是一款企业级应用,可以帮助企业更好地管理内部事务和外部客户。微信企业号还提供了支付功能,可以方便地进行企业内部和外部的资金流转。下面是微信企业号支付功能开通教程: 步骤1:申请微信支付 首先,您需要在微信支付官网上申请微信支付。 在申请过程中,您需要提供企业的相关信息,如企业名称、营业执照等。 审核通过后,您就可以在微信企业号中开通支付功能了。 步…

    html 2023年5月17日
    00
  • 怎么做好网站排名需要掌握的百度匹配算法

    为了做好网站排名,需要掌握百度匹配算法。以下是关于如何做好网站排名的攻略: 关键词研究 关键词研究是网站排名的基础。您需要了解您的目标受众使用哪些关键词来搜索您的产品或服务。使用关键词研究工具,如Google AdWords Keyword Planner或SEMrush,来确定最相关的关键词,并将它们用于您的网站内容和元数据中。 内容优化 内容是网站排名的…

    html 2023年5月17日
    00
  • 使用JAXBContext轻松实现Java和xml的互相转换方式

    使用JAXB(Java Architecture for XML Binding)Context可以轻松实现Java对象和XML文档之间的转换,其过程主要包括以下几个步骤: 定义Java对象,使用注解的方式描述对象与XML元素的映射关系 创建JAXBContext实例 使用JAXBContext实例创建Marshaller和Unmarshaller对象,分别…

    html 2023年5月30日
    00
  • 怎么申请apple id 网页申请apple id教程

    Apple ID是苹果公司提供的一种账户服务,可以用于购买和下载苹果公司的各种产品和服务,如iTunes、App Store、iCloud等。下面是怎么申请Apple ID的教程: 步骤1:进入Apple ID注册页面 打开苹果公司的官方网站,进入Apple ID注册页面。 如果您已经有了Apple ID账户,可以直接登录;如果没有,可以点击“创建您的App…

    html 2023年5月17日
    00
  • C#实现对象XML序列化的方法

    下面是关于C#实现对象XML序列化的方法的完整攻略: 1. 什么是XML序列化 XML序列化是将对象转化为XML文档的过程。在C#中,当我们需要将对象存储到文件或通过网络发送时,我们可以使用XML序列化将C#对象转换为XML文档,以便于存储、传输和还原。同时,XML序列化也可以将已经存在的XML文档还原为C#对象。 2. C#实现对象XML序列化的方法 C#…

    html 2023年5月30日
    00
  • json跟xml的对比分析

    下面就为大家介绍一下“JSON跟XML的对比分析”。 什么是JSON? JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式。JSON以文本格式进行数据传输,具有易读性、易解析和易于结构化等特点。在前后端数据交互、API接口传输等方面使用广泛。 什么是XML? XML,全称Extensible Markup Lang…

    html 2023年5月30日
    00
  • ASP.NET读取XML文件4种方法分析

    ASP.NET是一个强大的Web应用程序框架,它允许开发人员使用不同的语言和工具来创建互联网上的动态应用程序。其中,读取XML文件是ASP.NET程序中很常见的操作,它使得我们能够在程序中使用XML自定义数据。 在ASP.NET中,读取XML文件有以下四种方法: 方法1:使用XmlDocument类 XmlDocument类是由System.Xml命名空间提…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部