Android字符串资源

    技术2022-07-11  78

    Android字符串资源

    1.文件位置:2.资源引用2.1.在 Java 中:`R.string.string_name`2.2.在 XML 中:`@string/string_name` 3.语法4.字符数组4.1.文件位置:4.2.编译资源的数据类型4.3.资源引用4.4语法: 5.特殊字符的处理6.设置字符串格式7.使用 HTML 标记设置样式7.1带转义实体的 HTML 标记,并在完成格式设置后通过 `fromHtml(String)` 恢复这些实体。

    1.文件位置:

    res/values/filename.xml filename 是任意值。<string> 元素的 name 用作资源 ID。

    2.资源引用

    指向 String 的资源指针。

    2.1.在 Java 中:R.string.string_name

    String string = getString(R.string.hello);

    2.2.在 XML 中:@string/string_name

    <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />

    3.语法

    <?xml version="1.0" encoding="utf-8"?> <resources> <string name="string_name" >text_string</string> </resources>

    4.字符数组

    4.1.文件位置:

    res/values/filename.xml filename 是任意值。<string-array> 元素的 name 用作资源 ID。

    4.2.编译资源的数据类型

    指向 String 数组的资源指针。

    4.3.资源引用

    在 Java 中:R.array.string_array_name

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

    在XML中:@array/string_array_name

    <Spinner android:layout_width="wrap_content" android:layout_height="match_parent" android:entries="@array/string_array_name"/>

    4.4语法:

    <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="string_array_name"> <item>text_string1</item> <item>text_string2</item> </string-array> </resources>

    5.特殊字符的处理

    字符转义形式@@??<<&&单引号 (')以下任意字符:'\'在双引号中包括整个字符串(例如,“This’ll work”)双引号 (")以下任意字符:"\"请注意,您必须转义双引号。在单引号中包括字符串没有任何作用。

    6.设置字符串格式

    如需设置字符串的格式,可以在字符串资源中放入格式参数:

    <string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

    格式字符串有两个参数:%1$s 为字符串,而 %2$d 为十进制数字。然后,就可通过调用 getString(int, Object...) 来设置字符串格式。例如:

    String text = getString(R.string.welcome_messages, username, mailCount);

    7.使用 HTML 标记设置样式

    可以使用 HTML 标记为字符串添加样式设置。例如:

    <?xml version="1.0" encoding="utf-8"?> <resources> <string name="welcome">Welcome to <font color="red">Android</font>!</string> </resources>

    支持以下 HTML 元素:

    粗体:<b>、<em>斜体:<i>、<cite>、<dfn>文本放大 25%:<big>文本缩小 20%:<small>设置字体属性:<font face=“font_family” color=“hex_color”>。可能的字体系列示例包括 monospace、serif 和 sans_serif。设置等宽字体系列:<tt>删除线:<s>、<strike>、<del>下划线:<u>上标:<sup>下标:<sub>列表标记:<ul>、<li>换行符:<br>区隔标记:<div>CSS 样式:<span style=“color|background_color|text-decoration”>段落:<p dir=”rtl | ltr” style=”…”>

    7.1带转义实体的 HTML 标记,并在完成格式设置后通过 fromHtml(String) 恢复这些实体。

    (1)带样式的文本资源存储为 HTML 转义字符串:

    <resources> <string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string> </resources>

    带格式的字符串中添加了 `` 元素。请注意,开括号使用 < 符号实现了 HTML 转义。

    (2)然后照常设置字符串格式,但还需调用 fromHtml(String),以将 HTML 文本转换成带样式的文本:

    String text = getString(R.string.welcome_messages, username, mailCount); Spanned styledText = Html.fromHtml(text, FROM_HTML_MODE_LEGACY);

    由于 fromHtml(String) 方法会设置所有 HTML 实体的格式,因此请务必使用 htmlEncode(String) 转义带格式文本的字符串中任何可能存在的 HTML 字符。例如,如果您打算对包含“<”或“&”等字符的字符串进行格式设置,则在设置格式前必须先转义这类字符。如此一来,当通过 fromHtml(String) 传递带格式的字符串时,字符才会以最初的编写形式显示。例如:

    String escapedUsername = TextUtils.htmlEncode(username); String text = getString(R.string.welcome_messages, escapedUsername, mailCount); Spanned styledText = Html.fromHtml(text);
    Processed: 0.013, SQL: 9