首先,贴上这个工具类>当然,会有下载地址附上<
public class RichTextUtil { public static final String RICHTEXT_STRING = "string"; public static final String RICHTEXT_COLOR = "color"; public static final String RICHTEXT_SIZE = "size"; public static final String RICHTEXT_RSIZE = "relativesize"; public static final String RICHTEXT_DELETE = "delete"; public static final String RICHTEXT_BOLD = "bold"; /** * 根据传入的hashmaplist组成富文本返回,key在RichTextUtil里 * * @param list * @return */ public static SpannableStringBuilder getSpannableStringFromList(List<HashMap<String, Object>> list) { SpannableStringBuilder ssb = new SpannableStringBuilder(""); int position = 0; for (int i = 0; i < list.size(); i++) { HashMap<String, Object> map = list.get(i); try { String st = (String) map.get(RICHTEXT_STRING); ssb.append(st); int len = st.length(); if (map.containsKey(RICHTEXT_COLOR)) { int color = ((Integer) map.get(RICHTEXT_COLOR)).intValue(); ssb.setSpan(new ForegroundColorSpan(color), position, position + len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } if (map.containsKey(RICHTEXT_SIZE)) { int size = ((Integer) map.get(RICHTEXT_SIZE)).intValue(); ssb.setSpan(new AbsoluteSizeSpan(size), position, position + len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } if (map.containsKey(RICHTEXT_RSIZE)) { float size = ((Float) map.get(RICHTEXT_RSIZE)).floatValue(); ssb.setSpan(new RelativeSizeSpan(size), position, position + len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } if (map.containsKey(RICHTEXT_DELETE)) { ssb.setSpan(new StrikethroughSpan(), position, position + len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } //用样式标记文本(粗体) if (map.containsKey(RICHTEXT_BOLD)) { ssb.setSpan(new StyleSpan(Typeface.BOLD), position, position + len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } position = position + len; } catch (Exception e) { return null; } } return ssb; } public static SpannableStringBuilder getRachText(TextEntity... textEntitys) { List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>(); HashMap<String, Object> map; for (TextEntity textEntity : textEntitys) { String text = textEntity.getText();// 字 int textSize = textEntity.getTextSize();// 大小 int textColor = textEntity.getTextColor();// 颜色 boolean textBold = textEntity.getTextBold();// 加粗 map = new HashMap<String, Object>(); map.put(RichTextUtil.RICHTEXT_STRING, text);// 字 if (textColor != 0) { map.put(RichTextUtil.RICHTEXT_COLOR, new Integer(textColor));// 颜色 } if (textSize != 0) { map.put(RichTextUtil.RICHTEXT_SIZE, new Integer(textSize)); // 大小 } if (textBold) { map.put(RichTextUtil.RICHTEXT_BOLD, new Integer(textSize)); // 加粗 } list.add(map); } return RichTextUtil.getSpannableStringFromList(list); } }使用方式也很简单,把需要设置的字体的样式new成一个TextEntity实体,调用方法 直接setText即可
TextEntity teFirst = new TextEntity("检测到您需要以下权限\n", 0, 0, false);如果没有数据的话,可以默认是0,之后再new,这样也是不占位置
TextEntity teWriteContact = new TextEntity("", 0, 0, false); TextEntity teLast1 = new TextEntity("请点击", 0, 0, false); TextEntity teLast2 = new TextEntity(" 前往设置 ", 0, Color.BLUE, false); TextEntity teLast3 = new TextEntity("并且按图设置 ", 0, 0, false); // 塞入富文本 tvInfo.setText(RichTextUtil.getRachText(teFirst,teWriteContact,teLast1,teLast2,teLast3));**这样就可以了,附上相关类下载> 下载地址<**
