String的几种事半功倍的用法
来源:互联网 发布:淘宝数据包如何使用 编辑:程序博客网 时间:2024/06/10 08:33
1.在标签中使用了‘(单引号)或者”(双引号)
这时可以使用\对其进行转译。
eg.
<string name="good_example">This\'ll work</string><string name="good_example">This is a \"good string\".</string>
2.使用String.format时,应该这样写
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
Resources res = getResources();String text = String.format(res.getString(R.string.welcome_messages), "guchuanhang", 3);
3.使用Html标签
支持的html元素包括: <b>
for bold text. <i>
for italic text. <u>
for underline text.
<string name="welcome">Welcome to <b>Android</b>!
String blankWelcome=getString(R.string.welcome); tv0.setText(Html.fromHtml(blankWelcome));
无效!(“Android”没有进行加粗)
注意: <在html中是一个特殊字符,需要使用<
进行转译
<string name="welcome">Welcome to <b>Android <b>!</string>
ok!
这里存在一个特殊的情况,如果既需要使用String.format,又需要使用html标签,而且参数中包含html中的特殊标签。这时可以使用TextUtils.htmlEncode(),对参数进行编码,不会当作html标签进行解析。
eg.
<string name="welcome_messages_html">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
String userName="guchuan<b>hang"; String escapedUsername = TextUtils.htmlEncode(userName); Resources res = getResources(); String text = String.format(res.getString(R.string.welcome_messages_html), userName, 3); CharSequence styledText = Html.fromHtml(text); tv0.setText(styledText);
4.使用Spannables修饰字符串样式
可以修改字体颜色/粗细/倾斜等。
才疏学浅,不误人子弟了,把代码贴一下,希望能够起到一个抛砖引玉的作用。
注意:如果使用+来连接普通字符和特殊字符的话,特殊字符的样式会抹掉,使用textView.append是ok的。
Resources res=getResources(); CharSequence textXXX = bold(italic(res.getString(R.string.app_name)), color(Color.RED, res.getString(R.string.app_name))); tv0.setText(textXXX);
/** * Returns a CharSequence that concatenates the specified array of CharSequence * objects and then applies a list of zero or more tags to the entire range. * * @param content an array of character sequences to apply a style to * @param tags the styled span objects to apply to the content * such as android.text.style.StyleSpan * */ private static CharSequence apply(CharSequence[] content, Object... tags) { SpannableStringBuilder text = new SpannableStringBuilder(); openTags(text, tags); for (CharSequence item : content) { text.append(item); } closeTags(text, tags); return text; } /** * Iterates over an array of tags and applies them to the beginning of the specified * Spannable object so that future text appended to the text will have the styling * applied to it. Do not call this method directly. */ private static void openTags(Spannable text, Object[] tags) { for (Object tag : tags) { text.setSpan(tag, 0, 0, Spannable.SPAN_MARK_MARK); } } /** * "Closes" the specified tags on a Spannable by updating the spans to be * endpoint-exclusive so that future text appended to the end will not take * on the same styling. Do not call this method directly. */ private static void closeTags(Spannable text, Object[] tags) { int len = text.length(); for (Object tag : tags) { if (len > 0) { text.setSpan(tag, 0, len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } else { text.removeSpan(tag); } } } /** * Returns a CharSequence that applies boldface to the concatenation * of the specified CharSequence objects. */ public static CharSequence bold(CharSequence... content) { return apply(content, new StyleSpan(Typeface.BOLD)); } /** * Returns a CharSequence that applies italics to the concatenation * of the specified CharSequence objects. */ public static CharSequence italic(CharSequence... content) { return apply(content, new StyleSpan(Typeface.ITALIC)); } /** * Returns a CharSequence that applies a foreground color to the * concatenation of the specified CharSequence objects. */ public static CharSequence color(int color, CharSequence... content) { return apply(content, new ForegroundColorSpan(color)); }
翻译地址:
https://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling
0 0
- String的几种事半功倍的用法
- String.Format几种用法
- using的几种用法using的几种用法
- 创业事半功倍的17条金律
- 创业事半功倍的17条金律
- 那一定是事半功倍的
- 事半功倍的Android Studio快捷键
- using的几种用法
- using的几种用法
- using的几种用法
- using的几种用法
- using 的几种用法
- using的几种用法
- #pragma 的几种用法
- Using的几种用法
- using的几种用法
- using的几种用法
- using的几种用法
- NLB单播和多播区别
- 【转载】在华为敲代码那些年,我知道的这些事
- JavaScript高级程序设计(读书笔记)(三)
- java设计模式-单例模式
- Java入门教程-1.3Java的主要就业方向
- String的几种事半功倍的用法
- IOS 如何操作cookie
- MiniUI总结
- Usb协议
- Hadoop2.7.2之集群搭建(高可用)
- 一个经典例子让你彻彻底底理解java回调机制
- android中的回调
- 解决Win7OCX内部无法发送自定义消息的debug
- 笔记1