Resources中getString方法解析

article/2025/10/31 22:55:10

在Android开发中,我们的字符串一般都是统一写在项目的res/values/strings.xml中,如果我们需要得到指定的字符串,一般使用getString方法来得到。

其实getString特别的有用,而且用法也很灵活,下面我们就来说说这个方法。

一、getString的常见用法
在Resources类中它有两种定义形式:

public String getString(int id)public String getString(int id, Object... formatArgs)

第一个比较简单,直接通过getString就可以得到指定id的字符串,第二个使用到了占位符,就是可以给前面的字符串的占位符中动态的填充指定的值,所以用法比较灵活,我们重点来说第二种。

1、整型填充符%n$md
代表输出的是整数,n代表是第几个参数,m为数据的位数,如果数据位数不够,在输出之前放置空格,也可以设为0m,在输出之前放置m个0

2、字符串填充%n$ms
代表输出的是字符串,n代表是第几个参数,m为数据的位数,如果数据位数不够,在输出之前放置空格。

3、浮点数填充%n$mf
代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00

也可简单写成:
%d (表示整数)
%f (表示浮点数)
%s (表示字符串)

下面有个小例子:
string.xml

<string name="test1">当前进度为:%1$05d</string>
<string name="test2">当前已经发现 %1$d %2$s</string>
<string name="test3">当前数字为 %1$3.4f </string>

MainActivity文件

package com.xxx.cn.getstringtest;import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;public class MainActivity extends Activity {private TextView mTestText1;private TextView mTestText2;private TextView mTestText3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTestText1 = (TextView) findViewById(R.id.test1);mTestText2 = (TextView) findViewById(R.id.test2);mTestText3 = (TextView) findViewById(R.id.test3);mTestText1.setText(getString(R.string.test1, 55));mTestText2.setText(getString(R.string.test2, 55, "项"));mTestText3.setText(getString(R.string.test3, 87.44));}
}

布局文件就是几个TextView的垂直布局。

使用上面这些用法我们就可以动态的去向字符串中添加指定的内容。

二、与Html.fromHtml结合使用
getString与Html结合使用可以实现更加好的效果。

我们在上面的字符串如果想要设置部分字体的颜色或者字体什么的,我们就可以使用Html标签了,但是这些标签都需要使用转义字符。

转义字符表可看这篇文章:HTML转义字符大全

假如我们需要这个效果:
当前进度为55

那么string应该写成下面形式,要将html标签都转成转义字符

<string name="test4">当前进度为&lt;font color=\"red\"&gt;%1$d&lt;/font&gt;</string>mTestText4.setText(Html.fromHtml(getString(R.string.test4, 55)));

最终的运行效果为:
这里写图片描述

最后,我们来看看getString函数的源码:

public String getString(int id, Object... formatArgs) throws NotFoundException {String raw = getString(id);return String.format(mConfiguration.locale, raw, formatArgs);
}

从上面的代码我们就很容易看出,原理它使用的就是String.format进行格式化,具体String.format的详细用法可以参照下面这篇文章
String.format详解


http://chatgpt.dhexx.cn/article/yc3Ky6gS.shtml

相关文章

c语言 编写getString函数(运用malloc函数,不使用数组)

定义一个返回值为char*类型的函数 定义一个char类型字符&#xff08;传入&#xff09;用malloc函数在堆区开辟一个新的空间存字符串定义一个char*类型指针标记字符串首地址定义一个char*类型字符串为空定义一个int类型变量计数while循环&#xff0c;当传入字符c不等于‘\n’时…

JavaGUI开发实践:登录界面模拟(连接数据库)

文章目录 1. 实现功能概要2. 功能界面概览3. 代码详解&#xff08;1&#xff09;选择身份登录方法实现&#xff08;2&#xff09;登录按钮的响应 4. 全部代码示例5. 包的存放位置6. 项目全部代码下载地址&#xff1a;JavaGUI超市进销存管理系统 所有代码7. Java GUI其他相关博客…

JavaGUI设计-计算器

.利用GUI程序设计方法实现简单计算器的设计。运行效果可设计为如下界面&#xff0c;也可设计为windows系统中的计算器样式。 &#xff08;此程序为整数计算&#xff09; 1 基础页面设计 2 流布局器使用 3 单选按钮注册监听事件 4 文本框中内容获取&#xff0c;数据覆盖 除法 …

Java之GUI

&#xff08;本文为博主JAVA课程学习总结&#xff09; GUI —— 图形化用户界面 JFC&#xff08;Java Foundation Classed&#xff09;是开发GUI的API集 JFC包括&#xff1a;AWT&#xff08;Abstract Window Toolkit抽象窗口工具包&#xff09;、Swing组件&#xff08;建立在…

JAVA--GUI

AWT(Abstract WindowToolkit抽象视窗工具组)包括了很多类和接口&#xff0c;用于java.Application的GUI(Graphics User Interface图形用户界面)编程&#xff0c;GUI的各种元素&#xff08;如&#xff1a;窗口&#xff0c;按钮&#xff0c;文本框等&#xff09;由java类来实现。…

JavaGUI------------常用的组件(标签、按钮)

目录 1.标签 2.按钮 1.标签 类&#xff1a;JLabel作用&#xff1a;显示文本或者提示信息 构造函数&#xff1a; new JLabel();new JLabel(Icon icon);//设置图标new JLabel(Icon icon&#xff0c;int aligment);//设置图标水平对齐方式new JLabel(String str&#xff0c;i…

javaGUI基础知识

*注: 作者使用的是 jdk1.8.0_121 版本,可根据下方链接进行下载 jdk1.8.0_121 64位 jdk1.8.0_131 32位 1.基础界面 Frame frame new Frame(); frame.setVisible(true);2.关闭按钮监听 frame.addWindowListener(new WindowAdapter(){Overridepublic void windowClosing(Windo…

Java GUI程序示例

Java GUI程序示例 与命令行界面相比&#xff0c;图形界面对于用户来说更为简便易用。图形用户界面&#xff08;Graphical User Interface&#xff0c;简称 GUI&#xff09;&#xff0c;关于Java图形用户界面&#xff0c;可参见 https://blog.csdn.net/cnds123/article/details…

JavaGUI界面实现跳转

页面跳转&#xff1a; 思路&#xff1a; 先定义一个类继承JFrame&#xff1b;定义要用的控件&#xff0c;再在构造方法中对定义的控件进行修改&#xff0c;后写出主函数&#xff0c;在主函数中调用构造方法。同理&#xff0c;在idea中&#xff0c;将需要跳转的几个界面置于同一…

JavaGUI显示表格(连接数据库)基础

文章目录 一、界面概览二、代码三、代码解释四、项目全部代码下载地址五、 项目代码说明六、功能更新&#xff1a;根据下拉单内容查询不同数据库6.1 界面概览6.2 用到的主要控件 七、其他相关博客7.1 <a href"https://blog.csdn.net/SKMIT/article/details/106676478&q…

Java-GUI简介

JavaSwing-GUI开发简介&#xff08;1&#xff09; 本期介绍一些GUI的基本知识&#xff0c;开发GUI程序的时候直接用windowbuilder生成框架&#xff0c;傻瓜式拖拽就行&#xff0c;非常简单。 一、布局管理器 1.1:FlowLayout(流式布局) 1.2:GridLayout(网格布局) 1.3:Grid…

Java:GUI编程

文章目录 GUI编程AWT一、AWT介绍二、组件和容器(Component和Container)2.1.Frame2.2.Panel 三、布局管理器3.1.第一种布局管理器——FlowLayout3.2.第二种布局管理器——BorderLayout3.3.第三种布局管理器——GridLayout&#xff08;表格布局管理器&#xff09;3.4.布局练习 四…

Java GUI编程

GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序看上去更加友好。 Swing概述 Swing是纯Java组件&#xff0c;使得应用程序在不同的平台上运行时具有相同外观和相同的行为。 Swing中的大部分组件类位于javax.swing包中。 Sw…

Java GUI入门教程

人生的烦恼&#xff0c;多在于知道的太多&#xff0c;而做的太少。 Java程序中开发GUI页面。下面我主要对Java中实现图像管理、图形绘制和颜色管理等做出介绍&#xff0c;与此同时&#xff0c;Swing包也做出一部分介绍。 像素与坐标 用于表示图像像素数目的称为图像分辨率。显…

【JAVA】GUI编程

GUI的概念 Swing概述 容器组件 布局管理器 常用组件 事件处理 对话框 GUI的概念 GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序使用起来更加便捷&#xff0c;看上去更加友好。 Swing概述 Swing是纯Java组件&#xff0c;使得…

Java--GUI编程

目录 GUI的概念 Swing概述 ​编辑 容器组件 布局管理器 常用组件 对话框 内部类 GUI的概念 GUI&#xff08;Graphics User Interface&#xff09;&#xff0c;图形用户界面&#xff0c;是指采用图形方式显示的计算机操作用户界面&#xff0c;是计算机与其使用者之间的…

GUI编程(java)

1 GUI的概念 GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序看上去更加友好&#xff0c;更加方便用户操作。 2 Swing概述 Swing是纯Java组件&#xff0c;使得应用程序在不同的平台上运行时具有相同外观和相同的行为&#x…

Java GUI 开发

Swing图形用户界面 GUI 图形用户界面&#xff08;Graphical User Interface&#xff0c;简称 GUI&#xff0c;又称图形用户接口&#xff09;是指采用图形方式显示的计算机操作用户界面&#xff0c;包括窗口、菜单、按钮等各种屏幕组件。 Swing Swing是JAVA的一个GUI工具包&a…

GUI (java)

GUI 一.GUI概念二.Swing概述三.容器组件四.常用容器1.窗体(1) JFrame类的构造方法(2) JFrame类的常用方法 2.面板(1)JPanel类的构造方法(2)JPanel类的常用方法 五.布局管理器1. FlowLayout 流式布局(1)FlowLayout构造方法 2.BorderLayout 边界布局3.GridLayout 网格布局 六.常用…

javaGUI

GUI 1.GUI的概念&#xff1a; GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序看上去更加友好&#xff1b; 2.Swing概述&#xff1a; Swing是纯Java组件&#xff0c;使得应用程序在不同的平台上运行时具有相同外观和相同的行…