欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android TextView实现词组高亮的示例代码

程序员文章站 2023-11-20 16:23:46
本文介绍了android textview实现词组高亮的示例代码,分享给大家,具体如下: highlighttextview android文本高亮控件,基于view实...

本文介绍了android textview实现词组高亮的示例代码,分享给大家,具体如下:

highlighttextview

android文本高亮控件,基于view实现。

特点

  1. 文本高亮
  2. 单词自动换行
  3. 高亮词组保持在同一行显示

效果如下:

Android TextView实现词组高亮的示例代码

主要逻辑:

  1. 两个 paint 负责绘制不同的文字
  2. 在每次绘制之前计算将要绘制的文本是否会超出屏幕宽度,如果超出则换行
protected void ondraw(canvas canvas) {
    super.ondraw(canvas);
    float x_draw = getpaddingleft();
    float y_draw = getpaddingtop() + dfpaint.gettextsize();
    for (extendtext t : extendtexts) {
      paint paint = t.ishighlight ? hlpaint : dfpaint;
      float textlen = paint.measuretext(t.textunit);
      if (x_draw + textlen > width) {
        x_draw = getpaddingleft();
        y_draw += paint.gettextsize();
      }
      canvas.drawtext(t.textunit, x_draw, y_draw, paint);
      x_draw += textlen;
    }
  }

demo

java:

public class mainactivity extends activity {
  private final static string text = "";
  private final static string[] highlight = {};

  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
    highlighttextview hltv = (highlighttextview) findviewbyid(r.id.hltv);
    hltv.setdisplayedtext(text, arrays.aslist(highlight));
    hltv.setdefaultcolor(color.black);
    hltv.sethighlightcolor(contextcompat.getcolor(this, r.color.colorprimary));

  }
}

xml:

<com.jy.highlighttextview.highlighttextview
  android:id="@+id/hltv"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:padding="5dp"
  app:textsize="16sp" />

methods:

method 方法 description 描述
setdefaultcolor(int color) 设置默认显示颜色
sethighlightcolor(int color) 设置高亮颜色
setdisplayedtext(string text, list<string> highlights) 设置显示的文本和高亮词组
settextsize(float size) 设置字体大小

xml value:

app:defaultcolor="@color/colorprimary"
app:highlightcolor="@color/coloraccent"
app:text="@string/app_name"
app:textsize="16sp"

完整请移步github-> jiyangg -> highlighttext

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。