开发者社区> code_xzh> 正文

SpannableString 给TextView添加不同的显示样式

简介: TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置myTextView = (TextView) this.findViewById(R.id.myTextView);  //创建一个 SpannableString对象     SpannableS
+关注继续查看
TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置
myTextView = (TextView) this.findViewById(R.id.myTextView);
  //创建一个 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()); 


关键方法:
public void setSpan (Object what, int start, int end, int flags)

下面是一个详细的例子:

public class TextViewJump2Activity extends Activity {
	private TextView mClickableText;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout layout = new LinearLayout(this);
		mClickableText = new TextView(this);
		mClickableText.setClickable(true);
		mClickableText.setTextSize(20);
		layout.addView(mClickableText);
		setContentView(layout);
		mClickableText.setText(getClickableSpan());
		mClickableText.setMovementMethod(LinkMovementMethod.getInstance());
	}
	private SpannableString getClickableSpan() {
		View.OnClickListener l = new View.OnClickListener() {
			public void onClick(View v) {
				Toast.makeText(TextViewJump2Activity.this, "Click Success", Toast.LENGTH_SHORT).show();
				//在这里就可以做跳转到activity或者弹出对话框的操作了
			}
		};
		
		SpannableString spanableInfo = new SpannableString("This is a test, Click Here!");
		int start = 16;
		int end = spanableInfo.length();
		spanableInfo.setSpan(new Clickable(l), start, end,
		Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
		return spanableInfo;
	}
}




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
你的网站添加X-UA-Compatible meta标签了吗?
          细心的朋友会发现下面的html代码中多了一个标签!源码下载网 - 提供最新免费网站源码下载   那这个标签是什么意思呢?让我来看下msdn上的说明:   In IE8 Beta 1, that op...
770 0
在String中添加移动构造函数和移动赋值运算符
13.50 没有定义析构函数 #include #include #include #include #include #include using namespace std; class String { public: String():elements(...
919 0
WPF中StringFormat的用法--显示特定位数的数字
原文:WPF中StringFormat的用法--显示特定位数的数字 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangli321456/article/details/80324458 ...
1037 0
+关注
code_xzh
对前端移动客户端技术比较擅长。著有《React Native移动开发实战》和《Kotlin入门与实战》和《Weex跨平台实战》,《React Native移动开发进阶》即将出版,正在努力完成《Flutter跨平台开发实战》
736
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载