赞
踩
通过上一篇文章
我的Android进阶之旅------> Android在TextView中显示图片方法
(地址:http://blog.csdn.net/ouyang_peng/article/details/46916963)
我们学会了在TextView中显示图片的方法,现在我们来学习如何为TextView组件中显示的文本添加背景色。要求完成的样子如图所示:
首先来学习使用BackgroundColorSpan对象设置文字背景色,代码如下:
- TextView textView=(TextView) findViewById(R.id.myTextView);
- //要显示的字符串
- String text="带背景色的文字";
- //将字符串转换为SpannableString对象
- SpannableString spannableString=new SpannableString(text);
- //确定要设置的字符串的start和end
- int start=0;
- int end=7;
- //创建BackgroundColorSpan对象,指定背景色为黄色
- BackgroundColorSpan backgroundColorSpan=new BackgroundColorSpan(Color.YELLOW);
- //使用setSpan方法将指定字符串转换成BackgroundColorSpan对象
- spannableString.setSpan(backgroundColorSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- //用SpannableString对象设置TextView
- textView.setText(spannableString);
- package com.oyp.edittext;
-
- import android.text.TextPaint;
- import android.text.style.CharacterStyle;
-
- public class ColorSpan extends CharacterStyle {
- private int mTextColor;
- private int mBackgroundColor;
-
- public ColorSpan(int textColor,int backgroundColor){
- mTextColor=textColor;
- mBackgroundColor=backgroundColor;
- }
- //覆盖CharacterStyle类的updateDrawState方法
- //并在该方法中设置了文字和背景颜色
- @Override
- public void updateDrawState(TextPaint tp) {
- tp.bgColor=mBackgroundColor;
- tp.setColor(mTextColor);
- }
- }
- package com.oyp.edittext;
-
- import android.os.Bundle;
- import android.text.Spannable;
- import android.text.SpannableString;
- import android.text.style.BackgroundColorSpan;
- import android.widget.TextView;
- import android.app.Activity;
- import android.graphics.Color;
-
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.oyp);
-
- TextView textView=(TextView) findViewById(R.id.myTextView);
- //要显示的字符串
- String text="<没有背景><黄色背景>\n\n<蓝色背景,红色文字>";
- //将字符串转换为SpannableString对象
- SpannableString spannableString=new SpannableString(text);
- //确定要设置的字符串的start和end
- int start=6;
- int end=12;
- //创建BackgroundColorSpan对象,指定背景色为黄色
- BackgroundColorSpan backgroundColorSpan=new BackgroundColorSpan(Color.YELLOW);
- //使用setSpan方法将指定字符串转换成BackgroundColorSpan对象
- spannableString.setSpan(backgroundColorSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- /**
- * <蓝色背景,红色文字> 子字符串的开始位置(没一个"\n"算一个长度)
- * 由于该子字符串再原字符串的最好,因此,end对于字符串的长度,也就是text.length()
- */
- start=14;
- //创建ColorSpan对象
- ColorSpan colorSpan=new ColorSpan(Color.RED, Color.BLUE);
- //将指定文字转换成ColorSpan对象
- spannableString.setSpan(colorSpan, start, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- //用SpannableString对象设置TextView
- textView.setText(spannableString);
- }
- }
oyp.xml
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context=".MainActivity" >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/myTextView"
- />
- </RelativeLayout>
程序运行效果如下图所示:
作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng
====================================================================================
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。