应用开发中有时候会遇到对文本替换与改变文本颜色的情况,可以通过字符串拼接的方式处理这种情况,这种方式会比较繁琐,且会引入过多的TextView,今天与大家分享一种简单高效的解决方案。
一:TextView组件改变部分文字的颜色:
|
//方法一:
TextView textView1 = (TextView) findViewById(R.id.text1);
textView1.setText(Html.fromHtml("红色其它颜色"));
//方法二:
TextView textView2 = (TextView) findViewById(R.id.text2);
String text = "获得银宝箱!";
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.setSpan(new BackgroundColorSpan(Color.RED), 2, 5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//设置指定位置文字的背景颜色
style.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//设置指定位置文字的颜色
textView2.setText(style);二:android string.xml文件中的整型和string型代替:
//字符串替换方法:
TextView textView3 = (TextView) findViewById(R.id.text3);
String text3 = String.format(getResources().getString(R.string.wether), 18, 30, "雷雨大风");
textView3.setText(text3); |
%1$d表示为第一个整型,以此类推;
在项目开发者,经常需要把以上两者结合起来使用。可以避免很多textview的拼接,如下所示:
|
//将颜色替换与字符串替换两者结合
TextView textView4 = (TextView) findViewById(R.id.text4);
String text4 = String.format(getResources().getString(R.string.wether), 18, 30, "雷雨大风");
int index[] = new int[3];
index[0] = text4.indexOf("18");
index[1] = text4.indexOf("30");
index[2] = text4.indexOf("雷雨大风");
SpannableStringBuilder style2 = new SpannableStringBuilder(text4);
style2.setSpan(new ForegroundColorSpan(Color.RED), index[0], index[0]
+ 2, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
style2.setSpan(new ForegroundColorSpan(Color.GREEN), index[1], index[1]
+ 2, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
style2.setSpan(new BackgroundColorSpan(Color.YELLOW), index[2], index[2] + 3,
Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
textView4.setText(style2); |
贴上全部代码供大家参考:
|
public class TextViewColor extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.textview_color);
//改变字体颜色
//方法一:
TextView textView1 = (TextView) findViewById(R.id.text1);
textView1.setText(Html.fromHtml("红色其它颜色"));
//方法二:
TextView textView2 = (TextView) findViewById(R.id.text2);
String text = "获得银宝箱!";
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.setSpan(new BackgroundColorSpan(Color.RED), 2, 5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//设置指定位置文字的背景颜色
style.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//设置指定位置文字的颜色
textView2.setText(style);
//字符串替换方法:
TextView textView3 = (TextView) findViewById(R.id.text3);
String text3 = String.format(getResources().getString(R.string.wether), 18, 30, "雷雨大风");
textView3.setText(text3);
//将颜色替换与字符串替换两者结合
TextView textView4 = (TextView) findViewById(R.id.text4);
String text4 = String.format(getResources().getString(R.string.wether), 18, 30, "雷雨大风");
int index[] = new int[3];
index[0] = text4.indexOf("18");
index[1] = text4.indexOf("30");
index[2] = text4.indexOf("雷雨大风");
SpannableStringBuilder style2 = new SpannableStringBuilder(text4);
style2.setSpan(new ForegroundColorSpan(Color.RED), index[0], index[0] + 2,
Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
style2.setSpan(new ForegroundColorSpan(Color.GREEN), index[1], index[1] + 2,
Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
style2.setSpan(new BackgroundColorSpan(Color.YELLOW), index[2], index[2] + 3,
Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
textView4.setText(style2);
}
} |
XML文件
|
http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="left"
android:orientation="vertical" >
< p=""> <>
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
< p=""> <>
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
< p=""> <>
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
< p=""> <>
android:id="@+id/text4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> |
|