如何在Android开发中通过TextView实现特定词组的高亮显示?

更新于
2026-09-24 05:41:29
1阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计515个文字,预计阅读时间需要3分钟。

如何在Android开发中通过TextView实现特定词组的高亮显示?

本文将为广大读者详细讲解如何在Android中利用TextView实现词组高亮,文章内容质量较高。鉴于文章内容来源于互联小分队共享,希望读者阅读完毕。

这篇文章将为大家详细讲解有关怎么在Android中利用TextView实现词组高亮,文章内容质量较高,因此自由互联小编分享给大家做个参考,希望大家阅读完这篇文

这篇文章将为大家详细讲解有关怎么在Android中利用TextView实现词组高亮,文章内容质量较高,因此自由互联小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

HighlightTextView

Android文本高亮控件,基于View实现。

特点

  • 文本高亮

  • 单词自动换行

  • 高亮词组保持在同一行显示

主要逻辑:

如何在Android开发中通过TextView实现特定词组的高亮显示?

两个 Paint 负责绘制不同的文字

在每次绘制之前计算将要绘制的文本是否会超出屏幕宽度,如果超出则换行

protectedvoidonDraw(Canvascanvas){super.onDraw(canvas);floatx_draw=getPaddingLeft();floaty_draw=getPaddingTop()+dfPaint.getTextSize();for(ExtendTextt:extendTexts){Paintpaint=t.isHighlight?hlPaint:dfPaint;floattextLen=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:

publicclassMainActivityextendsActivity{privatefinalstaticStringTEXT="";privatefinalstaticString[]HIGHLIGHT={};@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);HighLightTextViewhlTv=(HighLightTextView)findViewById(R.id.hlTv);hlTv.setDisplayedText(TEXT,Arrays.asList(HIGHLIGHT));hlTv.setDefaultColor(Color.BLACK);hlTv.setHighlightColor(ContextCompat.getColor(this,R.color.colorPrimary));}}

XML:

Methods:

method 方法description 描述setDefaultColor(int color)设置默认显示颜色setHighlightColor(int color)设置高亮颜色setDisplayedText(String text, List highlights)设置显示的文本和高亮词组setTextSize(float size)设置字体大小

xml value:

app:defaultColor="@color/colorPrimary"app:highlightColor="@color/colorAccent"app:text="@string/app_name"app:textSize="16sp"

关于怎么在Android中利用TextView实现词组高亮就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

本文共计515个文字,预计阅读时间需要3分钟。

如何在Android开发中通过TextView实现特定词组的高亮显示?

本文将为广大读者详细讲解如何在Android中利用TextView实现词组高亮,文章内容质量较高。鉴于文章内容来源于互联小分队共享,希望读者阅读完毕。

这篇文章将为大家详细讲解有关怎么在Android中利用TextView实现词组高亮,文章内容质量较高,因此自由互联小编分享给大家做个参考,希望大家阅读完这篇文

这篇文章将为大家详细讲解有关怎么在Android中利用TextView实现词组高亮,文章内容质量较高,因此自由互联小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

HighlightTextView

Android文本高亮控件,基于View实现。

特点

  • 文本高亮

  • 单词自动换行

  • 高亮词组保持在同一行显示

主要逻辑:

如何在Android开发中通过TextView实现特定词组的高亮显示?

两个 Paint 负责绘制不同的文字

在每次绘制之前计算将要绘制的文本是否会超出屏幕宽度,如果超出则换行

protectedvoidonDraw(Canvascanvas){super.onDraw(canvas);floatx_draw=getPaddingLeft();floaty_draw=getPaddingTop()+dfPaint.getTextSize();for(ExtendTextt:extendTexts){Paintpaint=t.isHighlight?hlPaint:dfPaint;floattextLen=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:

publicclassMainActivityextendsActivity{privatefinalstaticStringTEXT="";privatefinalstaticString[]HIGHLIGHT={};@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);HighLightTextViewhlTv=(HighLightTextView)findViewById(R.id.hlTv);hlTv.setDisplayedText(TEXT,Arrays.asList(HIGHLIGHT));hlTv.setDefaultColor(Color.BLACK);hlTv.setHighlightColor(ContextCompat.getColor(this,R.color.colorPrimary));}}

XML:

Methods:

method 方法description 描述setDefaultColor(int color)设置默认显示颜色setHighlightColor(int color)设置高亮颜色setDisplayedText(String text, List highlights)设置显示的文本和高亮词组setTextSize(float size)设置字体大小

xml value:

app:defaultColor="@color/colorPrimary"app:highlightColor="@color/colorAccent"app:text="@string/app_name"app:textSize="16sp"

关于怎么在Android中利用TextView实现词组高亮就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。