TextView显示多彩的颜色和图片
2017-07-10 13:18
239 查看
在Android中经常会需要在一段文字中使用不用的颜色,有以下两种办法:
1. 使用ForegroundColorSpan显示不同颜色
ForegroundColorSpan span = new ForegroundColorSpan(Color.RED); /** * 设置TextView部分颜色变色 * * @param textView 控件 * @param foregroundColorSpan 颜色 * @param starIndex 变色初始位置 * @param endIndex 变色结束位置 */ public static void setTextForColor(TextView textView, ForegroundColorSpan foregroundColorSpan, int starIndex, int endIndex) { SpannableStringBuilder style = new SpannableStringBuilder(textView.getText().toString()); style.setSpan(foregroundColorSpan, starIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(style); }
缺点:若文字需要多个地方变色则需要重复调用。
2. 使用Html特性显示不同颜色
Android中除了使用ForegroundColorSpan以后,在一些场景下我们可以使用html的特性来给TextView的部分文字变色:
// 要替换字符串的正则 String REG = "(\\[(\\#[0-9a-fA-F]{6,8})\\])(((?!\\[\\#).)*)(\\[\\#[G]{6,8}\\])"; // 替换指定的字符串为html标签 String str = "我分享了装备[#CC33FF]轩辕剑[#GGGGGG],而且[#FF0000]这[#GGGGGG][#FF7F00]是[#GGGGGG][#FFFF00]七[#GGGGGG][#00FF00]彩[#GGGGGG][#00FFFF]的[#GGGGGG][#0000FF]颜[#GGGGGG][#8B00FF]色[#GGGGGG],你喜欢吗?70" String html = str.replaceAll(REG, "<font color="$2">$3</font>"); // 显示到TextView上 String html = Html.fromHtml(s); textView.setText(html);
Html多种颜色效果图.png
3. 在TextView中插入图片:
// 在文字前后添加图标 private CharSequence addImageForBothSides(String str, int leftImageResId, int rightImageResId) { StringBuilder builder = new StringBuilder(); if (leftImageResId > 0) { builder.append("<img src=\""); builder.append(leftImageResId); builder.append("\"> "); builder.append(" "); } builder.append(str); if (rightImageResId > 0) { builder.append(" "); builder.append("<img src=\""); builder.append(rightImageResId); builder.append("\">"); } return Html.fromHtml(builder.toString(), imageGetter, null); } /** * 获取本地图片资源 */ private Html.ImageGetter imageGetter = new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { int id = Integer.parseInt(source); // 根据id从资源文件中获取图片对象 BitmapDrawable d = (BitmapDrawable) Global.getAppContext().getResources().getDrawable(id); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight() + 10); d.setGravity(Gravity.TOP); return d; } };
插入图片效果图.png
总结:
TextView支持Html的特性让我们在显示一段不规则的文字上有了更多可能。
相关文章推荐
- SpannableString与SpannableStringBuilder(把字符串转换成图片等,字符串在textview 等控件显示不同的颜色,背景样式的方法)
- Android textview字体颜色显示和图片显示
- EditText,TextView显示图片,超链接,颜色等
- textview中显示不同颜色的字体与显示图片
- Android textview字体颜色显示和图片显示
- TextView中显示不同颜色的文字和图片
- Android textview字体颜色显示和图片显示
- Android textview字体颜色显示和图片显示
- 用TextView显示带图片的效果
- 【工作笔记】android TextView、EditText对部分内容设置颜色、字体、超链接、图片
- Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等
- Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等
- 在TextView中显示文字和图片
- Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等
- android--设置TextView部分文字的颜色和背景(高亮显示)
- android中TextView分段显示不同颜色,字体,时间
- Android的TextView使用Html来处理图片显示、字体样式、超链接等
- android TextView和EditText中显示图片
- android--设置TextView部分文字的颜色和背景(高亮显示)
- Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等