TextView和EditText是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置。
使用步骤:
- SpannableString spannable = new SpannableString(str);
- // SpannableStringBuilder spannable = new SpannableStringBuilder(str);
- //创建各类Span
- CharacterStyle span=new UnderlineSpan();
- spannable.setSpan(span,start,end, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
- //可以连续设置span
- view.setText(spannable);
void android.text.SpannableString.setSpan(Object what, int start, int end, int flags)
setSpan会将start到end这间的文本设置成创建的span格式。span可以是图片格式。
各类Span示例
- new URLSpan("http://www.baidu.com")
- new BackgroundColorSpan(Color.RED)
- new ForegroundColorSpan(Color.YELLOW)
- new StyleSpan(android.graphics.Typeface.BOLD_ITALIC)
- new UnderlineSpan();
- new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置。
package com.qudaicheng.hello;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
import android.text.style.URLSpan;
import android.widget.TextView;
public class helloActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView myTextView = (TextView)this.findViewById(R.id.tv);
// 创建一个 SpannableString对象
SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");
// 设置超链接
sp.setSpan(new URLSpan("http://www.baidu.com"), 5, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置高亮样式一
sp.setSpan(new BackgroundColorSpan(Color.RED), 17, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置高亮样式二
sp.setSpan(new ForegroundColorSpan(Color.YELLOW), 20, 24, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
// 设置斜体
sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
// SpannableString对象设置给TextView
myTextView.setText(sp);
// 设置TextView可点击
myTextView.setMovementMethod(LinkMovementMethod.getInstance());
// TextView tv=(TextView)findViewById(R.id.tv);
// String str="我的一个android测试程序";
// SpannableStringBuilder stryle = new SpannableStringBuilder(str);
// stryle.setSpan(new ForegroundColorSpan(Color.BLUE), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// stryle.setSpan(new ForegroundColorSpan(Color.RED), 4, 11, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// stryle.setSpan(new ForegroundColorSpan(Color.WHITE), 11, 15, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// tv.setText(stryle);
}
}