-
import android.graphics.Color;
-
import android.os.Bundle;
-
import android.support.annotation.Nullable;
-
import android.support.v7.app.AppCompatActivity;
-
import android.view.Gravity;
-
import android.widget.LinearLayout;
-
import android.widget.TextView;
-
-
public class MainActivity extends AppCompatActivity {
-
-
@Override
-
protected void onCreate(@Nullable Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_main);
-
-
LinearLayout llContent = findViewById(R.id.ll_content);
-
for (int i = 0; i < 6; i++) {
-
TextView textView = new TextView(this);
-
textView.setTextSize(14);
-
textView.setGravity(Gravity.CENTER);
-
textView.setTextColor(Color.WHITE);
-
textView.setPadding(0, 20, 0, 20);
-
setText(textView, i);
-
llContent.addView(textView);
-
}
-
}
-
-
/**
-
* 方法描述:设置文本内容
-
**/
-
private void setText(TextView textView, int position) {
-
String text = "注意:打雷下雨了,快回家收衣服吧!";
-
switch (position) {
-
case 0:
-
// 根据文本下标,指定单个部分文字变色
-
textView.setText(StringDesignUtil.getSpannableStringBuilder(text, Color.RED, 3, 5));
-
break;
-
case 1:
-
// 指定关键字变色,并且给相对应的关键指定颜色
-
textView.setText(StringDesignUtil.getSpannableStringBuilder(text, new String[]{"打雷", "收衣服"}, new int[]{Color.BLUE, Color.RED}));
-
break;
-
case 2:
-
// 文本由关键字拼接而成,文本内容与字体颜色一一对应显示
-
textView.setText(StringDesignUtil.getSpannableStringBuilder(
-
new String[]{"注意:", "打雷", "下雨了,快回家", "收衣服", "吧!"},
-
new int[]{Color.WHITE, Color.RED, Color.WHITE, Color.GREEN, Color.WHITE}));
-
break;
-
-
case 3:
-
// 根据关键字,指定单个部分文字颜色
-
textView.setText(StringDesignUtil.getSpanned(text, "打雷", "#e607bf"));
-
break;
-
case 4:
-
// 指定关键字变色,并且给相对应的关键指定颜色
-
textView.setText(StringDesignUtil.getSpanned(text,
-
new String[]{"打雷", "收衣服"},
-
new String[]{"#ff0000", "#185af0"}));
-
break;
-
case 5:
-
// 文本由关键字拼接而成,文本内容与字体颜色一一对应显示
-
textView.setText(StringDesignUtil.getSpanned(
-
new String[]{"注意:", "打雷", "下雨了,快回家", "收衣服", "吧!"},
-
new String[]{"#ffffff", "#ff0000", "#ffffff", "#185af0", "#ffffff",}));
-
break;
-
}
-
}
-
-
-
-
import android.text.Html;
-
import android.text.Spannable;
-
import android.text.SpannableStringBuilder;
-
import android.text.Spanned;
-
import android.text.TextUtils;
-
import android.text.style.ForegroundColorSpan;
-
-
/**
-
* 类描述:字符串设计工具类
-
*/
-
public class StringDesignUtil {
-
/**
-
* 方法描述:根据文本下标,指定单个部分文字变色
-
**/
-
public static SpannableStringBuilder getSpannableStringBuilder(String text, int color, int startIndex, int entIndex) {
-
SpannableStringBuilder builder = new SpannableStringBuilder(text);
-
if (startIndex >= 0 && entIndex > startIndex && entIndex <= text.length()) {
-
builder.setSpan(new ForegroundColorSpan(color), startIndex, entIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-
}
-
return builder;
-
}
-
-
/**
-
* 方法描述:指定关键字变色,并且给相对应的关键指定颜色
-
**/
-
public static SpannableStringBuilder getSpannableStringBuilder(String text, String texts[], int color[]) {
-
SpannableStringBuilder builder = new SpannableStringBuilder(text);
-
if (texts != null) {
-
for (int i = 0; i < texts.length; i++) {
-
String value = texts[i];
-
if (!TextUtils.isEmpty(value) && text.contains(value)) {
-
if (color != null && color.length > i) {
-
int startIndex = text.indexOf(value);
-
int entIndex = startIndex + value.length();
-
if (entIndex > startIndex && entIndex <= text.length()) {
-
builder.setSpan(new ForegroundColorSpan(color[i]), startIndex, entIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-
}
-
}
-
}
-
}
-
}
-
return builder;
-
}
-
-
/**
-
* 方法描述: 文本由关键字拼接而成,文本内容与字体颜色一一对应显示
-
**/
-
public static SpannableStringBuilder getSpannableStringBuilder(String text[], int color[]) {
-
SpannableStringBuilder builder = new SpannableStringBuilder();
-
if (text != null) {
-
for (int i = 0; i < text.length; i++) {
-
int startIndex = builder.length();
-
builder.append(text[i]);
-
if (color != null && color.length > i) {
-
builder.setSpan(new ForegroundColorSpan(color[i]), startIndex, builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-
}
-
}
-
}
-
return builder;
-
}
-
-
/**
-
* 根据关键字,指定单个部分文字颜色
-
**/
-
public static Spanned getSpanned(String text, String keyword, String colorValue) {
-
return Html.fromHtml(text.replace(keyword, "<font color=" + colorValue + ">" + keyword + "</font>"));
-
}
-
-
/**
-
* 指定关键字变色,并且给相对应的关键指定颜色
-
**/
-
public static Spanned getSpanned(String text, String keyword[], String colorValue[]) {
-
if (keyword != null && colorValue != null) {
-
for (int i = 0; i < keyword.length; i++) {
-
if (colorValue.length > i) {
-
text = text.replace(keyword[i], "<font color=" + colorValue[i] + ">" + keyword[i] + "</font>");
-
}
-
}
-
}
-
return Html.fromHtml(text);
-
}
-
-
/**
-
* 文本由关键字拼接而成,文本内容与字体颜色一一对应显示
-
**/
-
public static Spanned getSpanned(String keyword[], String colorValue[]) {
-
StringBuffer buffer = new StringBuffer();
-
if (keyword != null && colorValue != null) {
-
for (int i = 0; i < keyword.length; i++) {
-
if (colorValue.length > i) {
-
buffer.append("<font color=" + colorValue[i] + ">" + keyword[i] + "</font>");
-
}
-
}
-
}
-
return Html.fromHtml(buffer.toString());
-
}
-
-
}
运行效果图: