为了账号安全,请及时绑定邮箱和手机立即绑定

急求,如何实现Android textview的部分字体变色并且整个段落左右对齐

急求,如何实现Android textview的部分字体变色并且整个段落左右对齐

殇7 2018-04-11 10:15:45
我想问问,如何实现Android textview的部分字体变色并且整个段落左右对齐,你们有没有类似的demo?我搞了好几天都没实现,现在参照网上的代码,实现了段落对齐,然后分开使用Android HTML解析实现了部分文字变色,但是最后把它们两融在一起的时候,颜色就失效了,这个怎么破?代码如下 = ;;TextPaint ; String = ; Pattern ; Matcher ; String[] = String[]; String[] = String[]; JustifyTextView(Context context) {     (context);     init(); } JustifyTextView(Context context, AttributeSet attrs) {     (context, attrs);     init(); } JustifyTextView(Context context, AttributeSet attrs, defStyleAttr) {     (context, attrs, defStyleAttr);     init(); } init() {     = getPaint();     .setColor(getCurrentTextColor());     .= getDrawableState(); } onDraw(Canvas canvas) {     = ;     = getMeasuredWidth();+= getTextSize();     String text = getText().toString();     Layout layout = getLayout();     lineCount = layout.getLineCount();     (i = ; i < lineCount; i++) {lineStart = layout.getLineStart(i);         lineEnd = layout.getLineEnd(i);         String lineText = text.substring(lineStart, lineEnd);(needScale(lineText)) {             (i == lineCount - ) {(lineText.indexOf() != -||lineText.indexOf() != -)                     .setColor(Color.);                 .setColor(Color.);                 canvas.drawText(lineText, , , );             } {                 (lineText.indexOf() != -||lineText.indexOf() != -)                     .setColor(Color.);                 .setColor(Color.);                 width = StaticLayout.(text, lineStart, lineEnd, );                 drawScaleText(canvas, lineText, width);             }         } {             canvas.drawText(lineText, , , );         }         += getLineHeight();} } drawScaleText(Canvas canvas, String lineText, lineWidth) {     x = ;     (isFirstLineOfParagraph(lineText)) {         String blanks = ;         canvas.drawText(blanks, x, , );         width = StaticLayout.(blanks, );         x += width;         lineText = lineText.substring();     }     interval = (- lineWidth) / (lineText.length() - );     (i = ; i < lineText.length(); i++) {         String character = String.(lineText.charAt(i));         cw = StaticLayout.(character, );         canvas.drawText(character, x, , );         x += (cw + interval);     } } isFirstLineOfParagraph(String lineText) {     lineText.length() > && lineText.charAt() == && lineText.charAt() == ; } needScale(String lineText) {     (lineText.length() == ) {         ;     } {         lineText.charAt(lineText.length() - ) != ;     } } //使用正则表达式提取关键字 setText(CharSequence text, BufferType type) {     = Pattern.();     = .matcher(text);     String s = text.toString();     (i = ; .find(); i++) {         [i] = .group().replaceAll(, );         s = s.replaceAll(, ).replace([i], );     }     text =text.toString().replaceAll(, );     .setText(text, type); }
查看完整描述

1 回答

?
殇7

TA贡献3条经验 获得超1个赞

上面的代码错 了,代码如下

https://img1.sycdn.imooc.com//5acd71b100010e1909792549.jpg

查看完整回答
反对 回复 2018-04-11
  • 1 回答
  • 0 关注
  • 1644 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信