Android 处理文本资源的几种方式

135 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情

1. 一般使用

在 Android 使用字符串资源,最基本的方法就是定义字符串

string 字符串标签

通过 string 标签定义文本

<string name="app_name">AppDemo</string>

代码调用:

context.getString(R.string.app_name);

string-array 字符串数组标签

通过 string-array 标签定义数组

<string-array name="planets_array">
		<item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
</string-array>

代码调用:

Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);

2. 资源间接引用

<string name="app_name">AppDemo</string>
<string name="text">@string/app_name</string>

通过资源间接引用的方式,减少重复文案的定义,相当于给同一个文案起了个别名。

3. 使用转换符定义 String

Android 支持字符串占位符定义,比如:

<string name="format">a first num %1$s , a second num %2$s</string>

1$2$ 表示第几个字符串,%d表示十进制。如果只有一个占位,可直接将 %1$s 简化成 %s

代码调用:

mTvFormat.setText(String.format(getString(R.string.format), "one", "two"));

常用转换符如下:

转换符说明实例
%s字符串类型”string“
%c字符类型’a‘
%b布尔类型true
%d整数类型 十进制99
%x整数类型 十六进制FF
%o整数类型 八进制77
%f浮点类型99.99
%a十六进制浮点类型FF.35AE
%e指数类型9.38e+5
%g通用浮点类型(f 和 e 类型中较短的)
%h散列码
%%百分比类型%
%n换行符
%tx日期与时间类型(x代表不同的日期与实践转换符)

4. html 标签

string 中可以直接放下格式化的 html 样式 如:

<string name="html"><b>注意:</b></string>
  • <b> 表示粗体文本。
  • <i> 表示斜体文本。
  • <u> 表示 下划线 文本。

5. 使用 CDATA 实现复杂样式

<string name="reply_me"><![CDATA[回复 <span style="color:#4C4C4C">我:</span>]]></string><string name="reply_me"><Data><![CDATA[回复 <span style="color:#4C4C4C">我:</span>]]></Data></string>

代码调用:

mTvColor.setText(Html.fromHtml(getString(R.string.reply_me)));

这个例子可以定义 “我” 的颜色,除了颜色,也可以使用其他样式的标签。