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日

相关文章

  • python通过ElementTree操作XML获取结点读取属性美化XML

    操作XML是Python开发中非常常见的工作,ElementTree是Python标准库中处理XML的模块之一。本攻略将介绍如何使用ElementTree模块来操作XML,包括获取结点、读取属性以及美化XML等内容。 获取结点 在ElementTree中,获取XML文档中的某个结点有多种方法。其中最常用的方式是使用find()和findall()方法。 fi…

    html 2023年5月30日
    00
  • React中的JSX { }的使用详解

    当我们在开发React应用时,通常会用到JSX语法。JSX是一种像HTML那样的语法扩展,它允许我们在JavaScript代码中编写类似XML的代码。在JSX中,我们可以使用大括号{ }来插入JavaScript表达式。 JSX中大括号 { } 的使用方法 1. 注入变量 我们可以使用大括号 { } 将JavaScript表达式嵌入到JSX语法中,如下所示:…

    html 2023年5月30日
    00
  • JSON扫盲帖 JSON.as类教程

    下面是对“JSON扫盲帖 JSON.as类教程”这篇文章的详细讲解攻略。 一、什么是JSON 首先,我们需要了解JSON的基本概念。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web应用程序中的数据传输。JSON数据以键值对的形式组成,并使用大括号{}表示一个对象,中括号[]表示一个数组。JSON中的值可…

    html 2023年5月30日
    00
  • Android基础教程数据存储之文件存储

    针对 Android 基础教程中的数据存储之文件存储一章,我会给出完整的攻略,以及至少两条示例说明。 一、数据存储之文件存储 Android 系统提供了多种数据存储技术,其中文件存储技术是比较常用的一种。文件存储主要用于存储一些非结构化的数据,如图片、音频和视频等。文件存储可以分为内部存储和外部存储两种,其中内部存储又分为应用程序私有存储和应用程序公有存储两…

    html 2023年5月31日
    00
  • springboot页面国际化配置指南

    下面我将详细讲解“Spring Boot 页面国际化配置指南”的完整攻略。 前言 在当前的全球化时代,应用程序需要支持多种语言和文化,因此国际化已成为开发项目的一个重要特性。Spring Boot 提供了一种非常方便的方式来实现页面国际化,本文将介绍如何在 Spring Boot 中配置页面国际化,帮助开发者更好地支持不同语言和文化环境。 步骤 1. 创建资…

    html 2023年5月30日
    00
  • Spring中Xml属性配置的解析全过程记录

    下面是关于“Spring中Xml属性配置的解析全过程记录”的完整攻略。 一、XML属性配置的解析过程 Spring中的XML配置文件可以用于配置bean实例的属性,将属性值设置到Java对象上。它主要包含以下几个步骤: 1.加载配置文件 Spring通过XmlBeanDefinitionReader类读取XML配置文件,并将它解析成bean定义,然后返回一个…

    html 2023年5月30日
    00
  • word中的网址怎么变成超链接点击即可进入网页?

    word中的网址怎么变成超链接点击即可进入网页? 在Word中,您可以将网址转换为超链接,使其成为可点击的链接,方便读者直接访问网页。以下是关于如何将网址转换为超链接的攻略,包括以下几个步骤: 步骤1:选中网址 首先,您需要选中要转换为超链接的网址。您可以使用鼠标或键盘来选中它。 步骤2:插入超链接 在选中网址后,您需要插入超链接。以下是两种方法: 在Wor…

    html 2023年5月17日
    00
  • 电脑打字乱码怎么办? txt文字变乱码的解决办法

    电脑打字乱码怎么办?txt文字变乱码的解决办法 问题描述 在使用电脑打字的过程中,有时会出现乱码的情况,即在打出的文字中出现了一些奇怪的符号或变为乱码,此时无法正常阅读和编辑。这种情况在打开txt文本时也可能出现。 解决方案 出现这种情况时,我们可以采取以下几种方案: 方案一:修改编码方式 打开乱码的文本文件(如:txt文件),在左上角找到“文件”菜单,点击…

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