Android TextView实现词组高亮的示例代码
程序员文章站
2023-12-10 19:16:52
本文介绍了android textview实现词组高亮的示例代码,分享给大家,具体如下:
highlighttextview
android文本高亮控件,基于view实...
本文介绍了android textview实现词组高亮的示例代码,分享给大家,具体如下:
highlighttextview
android文本高亮控件,基于view实现。
特点
- 文本高亮
- 单词自动换行
- 高亮词组保持在同一行显示
效果如下:
主要逻辑:
- 两个 paint 负责绘制不同的文字
- 在每次绘制之前计算将要绘制的文本是否会超出屏幕宽度,如果超出则换行
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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。