实现对特定内容改变字体颜色的TextView

最近产品中需要一个搜索功能,比如搜索Android,搜索得到的内容中需要对所有的Android进行标红的处理,就自己重写了个textView实现了这个功能。上代码:

package com.amuro.custom_text_view;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;
import android.util.AttributeSet;
import android.widget.TextView;

public class MyTextView extends TextView
{

	public MyTextView(Context context, AttributeSet attrs)
	{
		super(context, attrs);
	}

	public void setSpecifiedTextsColor(String text, String specifiedTexts, int color)
	{
		List<Integer> sTextsStartList = new ArrayList<>();

		int sTextLength = specifiedTexts.length();
		String temp = text;
		int lengthFront = 0;//记录被找出后前面的字段的长度
		int start = -1;
		do
		{
			start = temp.indexOf(specifiedTexts);

			if(start != -1)
			{
				start = start + lengthFront;
				sTextsStartList.add(start);
				lengthFront = start + sTextLength;
				temp = text.substring(lengthFront);
			}

		}while(start != -1);

		SpannableStringBuilder styledText = new SpannableStringBuilder(text);
		for(Integer i : sTextsStartList)
		{
			styledText.setSpan(
					new ForegroundColorSpan(color),
					i,
					i + sTextLength,
					Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
		}

		setText(styledText);
	}
}

使用方法也很简单,加入布局文件后直接调用setSpecifiedTextsColor方法就可以了,如下:

package com.amuro.custom_text_view;

import com.amuro.R;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;

public class TextActivity04 extends Activity
{
	private MyTextView textView;

	public String text = "Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。[1] 2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。";

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_test_04_layout);

		textView = (MyTextView)findViewById(R.id.tv);
		textView.setSpecifiedTextsColor(text, "Android", Color.parseColor("#FF0000"));
	}
}

效果如上图,很简单不多说了。

时间: 2024-10-31 23:01:11

实现对特定内容改变字体颜色的TextView的相关文章

Android 改变字体颜色的三种方法

在TextView中添加文本时有时需要改变一些文本字体的颜色,今天学到了三种方法,拿出来分享一下 1.在layout文件下的配置xml文件中直接设置字体颜色,通过添加android:textcolor=“#FFFFFF”来变化颜色 但这样的效果只能让字体千篇一律的显示一种颜色 2.在activity中通过TextView tv=new TextView(this):实例化一个textview,通过setContentView(tv);将其加载到当前activity,设置要显示的内容String

Android RadioGroup的RadioButton 选择改变字体颜色和背景颜色

RadioGroup <RadioGroup android:id="@+id/client_charge_radiogroup" android:layout_width="200dp" android:layout_height="40dp" android:layout_marginLeft="5dp" android:layout_alignParentRight="true" android

RadioGroup 的 RadioButton 选择改变字体颜色和背景颜色

RadioGroup [html] view plaincopy <RadioGroup android:id="@+id/client_charge_radiogroup" android:layout_width="200dp" android:layout_height="40dp" android:layout_marginLeft="5dp" android:layout_alignParentRight=&q

Android基础TOP2:单机按钮改变字体颜色

---恢复内容开始--- Activity: <TextView android:id="@+id/t1" android:textSize="30dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="100dp" android:text="

Python 改变字体颜色

格式:\033[显示方式;前景色;背景色m 说明:前景色            背景色           颜色---------------------------------------30                40              黑色31                41              红色32                42              绿色33                43              黃色34         

python改变字体颜色

在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中.而一般的应用服务器,第三方库,甚至服务器的一些通告也会在终端中显示,这样就搅乱了我们想要的信息. 书写格式,和相关说明如下: 格式:\033[显示方式;前景色;背景色m 说明: 前景色 背景色 颜色 --------------------------------------- 30 40 黑色 31 41 红色 32 42 绿色 33 43 黃色 34 44 蓝色 35 45 紫红色 3

android 按钮按下时改变字体颜色

1.新建 drawable/button_font_style.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="

android自定义控件实现TextView按下后字体颜色改变

今天跟大家分享一下Android自定义控件入门,先介绍一个简单的效果TextView,按下改变字体颜色,后期慢慢扩展更强大的功能 直接看图片             第一张是按下后截的图,功能很简单,也很容易实现,下面来看一下如何通过重写TextView来实现 一共三个文件  TextViewM.java,MainActivity.java,activity_textview.xml TextViewM.java 1 package landptf.control; 2 3 import and

c语言编程设置控制台字体颜色

一.设置字体颜色: 1. 0 = 黑色       8 = 灰色 1 = 蓝色       9 = 淡蓝色 2 = 绿色       A = 淡绿色 3 = 浅绿色     B = 淡浅绿色 4 = 红色       C = 淡红色 5 = 紫色       D = 淡紫色 6 = 黄色       E = 淡黄色 7 = 白色       F = 亮白色 #include <stdlib.h> system("color 2");system("color F&