字符串可以说是我们使用频率最高的一种资源之一了,毕竟每一款APP当中都要有一些文本提示信息或标题文字等。为了在开发过程中更加方便快捷的使用字符串,Android为我们提供了强大的字符串String资源。下面我们就系统的来学习下吧。
一、使用场景
1、默认的窗口标题,应用程序名称
2、某些Activity中的操作步骤,提示信息
3、根据参数动态显示的一些字符串信息
(注:此处只列举了几种常用的场景,并不是全部使用场景)
Android主要支持了普通字符串String、字符串数组array、占位符格式化字符串、简易的html标签格式化字符串、复数字符串Quantity Strings (Plurals)5种使用方式。其中复数字符串是用来适应不同语言中数量关系的使用不同,如英语中one book,three books……此处就不作详说了,感兴趣的读者可以详查官方文档。
二、普通字符串String
文件路径:res/values/filename.xml**
引用方式如下:
In Java: R.string.string_name
In XML:@string/string_name
语法示例:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello!</string>
</resources>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello" />
String string = getString(R.string.hello);
三、字符串数组array
文件路径:res/values/filename.xml
引用方式如下:
In Java: R.array.string_array_name
语法示例:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
</string-array>
</resources>
Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);
四、占位符格式化字符串
占位符格式化字符串要结合方法** String.format(String, Object...)**使用,示例如下:
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
%1,%2,……%n表示占位符。
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
五、html标签格式化字符串
示例代码如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="welcome">Welcome to <b>Android</b>!</string>
</resources>
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);
注意:只支持以下几个标签
<b>:粗体
<i>:斜体
<u>:下划线
如果字符串中包含了html的特殊字符,如“<”,“>”,“&”等,必须先使用htmlEncode方法进行格式化后,再使用format方法格式化,示例如下:
String escapedUsername = TextUtil.htmlEncode(username);
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), escapedUsername, mailCount);
CharSequence styledText = Html.fromHtml(text);
网友评论