一段文字中的几个keyword显示高亮

将一段文字中的几个keyword显示高亮

演示样例:将“我的愿望是当个绿巨人,所以我想让我的皮(derma)肤是绿色”中的”皮肤“显示绿色。

<span style="font-size:18px;">public class MainActivity extends Activity {
	private static TextView mTextView;
	//须要显示的文字
	private static String keywords="皮(.*)肤";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView=(TextView)findViewById(R.id.tv_moder);
        //调用TextUtilTools类的highlight方法
        SpannableStringBuilder textString = TextUtilTools.highlight(
        		mTextView.getText().toString(), keywords);
        //改动文本显示内容
		mTextView.setText(textString);
    }

    public static class TextUtilTools {
    	/**
    	 * @param text 要显示的内容
    	 *
    	 * @param target 要高亮显示的内容
    	 * @param SpannableStringBuilder 相似于String,比String多了能够给文字加入样式(颜色,下划线···)
    	 **/
		public static SpannableStringBuilder highlight(String text,
				String target) {
			SpannableStringBuilder spannable = new SpannableStringBuilder(text);
			//字体样式
			CharacterStyle span = null;
			//将keywords作为一个模板
			 Pattern pattern=Pattern.compile(keywords);
			 //匹配器
		     Matcher matcher =pattern.matcher(mTextView.getText());

			while (matcher.find()) {
				span = new ForegroundColorSpan(Color.GREEN);// 须要反复。
				//设置spannable中的关键字
				spannable.setSpan(span, matcher.start(), matcher.end(),
						Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
			}
//			spannable.setSpan(new ClickableSpan() {
//				@Override
//				public void onClick(View arg0) {
//					MethodsExtra.startActivity(mContext,HouseManageActivity.class);}
//			}, 0, 0, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
			return spannable;
		}
	}

}
</span>


<span style="font-size:24px;color:#ff0000;">将textView中的几个字显示高亮,最简单的方法:</span>
<span style="font-size:14px;color:#333333;"></span><pre class="java" name="code">tvHuan.setText(Html.fromHtml("看不清<font color=#ff0000>换一张</font>"))。
<span style="font-size:24px;color:rgb(255,0,0);">
</span>

啦啦~啦~~啦~~~,今天刚学会的。晒给大家!

。!

时间: 2024-10-09 11:04:51

一段文字中的几个keyword显示高亮的相关文章

一段文字中的几个关键字显示高亮

将一段文字中的几个关键字显示高亮 示例:将"我的愿望是当个绿巨人,所以我想让我的皮(derma)肤是绿色"中的"皮肤"显示绿色. <span style="font-size:18px;">public class MainActivity extends Activity { private static TextView mTextView; //需要显示的文字 private static String keywords=&qu

C语言K&R习题系列——统计一段文字中各个字母出现的频率

原题: /*Write a program to print a histogram of the frequencies of *difficent characters in it inputs */ 这个和上一个类似 输入部分 #include < stdio.h >    #define NUM_CHARS 256    main ( void )  { int c; int done = 0; int thisIdx = 0; long frequrr[NUM_CHARS + 1];

输入一段文字(里面仅有汉字和数字组成),输出这段文字中汉字的个数。

Console.WriteLine("请输入一段文字:"); string str = Console.ReadLine(); int sum =str.Length;//定义一个值变量用来记录汉字的个数. for (int i = 0; i < str.Length; i++) { string s = str.Substring(i, 1); try { int a = int.Parse(s); sum--; } catch { } } Console.WriteLine(

C++统计一段文字中各单词出现的频率

#include <iostream> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ class SqString{private: char * base; int length;public: SqString() { } SqString(char * s) { lengt

获取大段文字中的所有中文字符并去重

主要目的是freetype加载全部中文文字的时候节省一些开销. 1.首先将所有含有中文文字的java.json等,全文粘贴到一个文本中. 2.在文本中全文搜索,开启正则,条件为:[^\一-\龥]+ 3.将所有符合搜索结果的部分replace为"" 4.将剩余的中文字符用下面代码简单处理 import java.util.ArrayList; /** * Created by xirtam on 15/6/29. */ public class Test { public static

从一段文字中提取出uri信息

package handle.groupby; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer

统计一段文字中数组、中文、英文字母、空格以及其他特殊字符出现的次数

package util; public class CountStr { /** * 有一个字符串,其中包含中文字符.英文字符和数字字符,请统计和打印出各个字符的个数 * 短信发送平台,短信字数控制查询方法 */ public static void main(String[] args) { //String str = "adasf AAADFD我是中文,,>123"; //String str = "金马甲高端商品交易平台--2013全城热恋克拉钻石项目预售,1

C语言K&amp;R习题系列——统计一段文字中各个字母出现的频率

原题: /*Write a program to print a histogram of the frequencies of *difficent characters in it inputs */ 这个和上一个类似 输入部分 #include < stdio.h > #define NUM_CHARS 256 main ( void ) { int c; int done = 0; int thisIdx = 0; long frequrr[NUM_CHARS + 1]; long t

SpannableString 设置一段文字中部分字体颜色

SpannableString strTitle = new SpannableString("病情描述(必填项,请至少填写20个字)"); strTitle.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.pre_text_gray_999)),4,19, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); diseaseDescribeTitle.setText(strTitle);