Android中实现词组高亮TextView方法示例
程序员文章站
2023-12-10 19:18:46
前言
本文主要给大家介绍了关于android实现词组高亮textview的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
highlight...
前言
本文主要给大家介绍了关于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 (本地下载)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。