概述
前言:
spannableString其实和string一样,textview可以直接通过设置spannablestring来显示文本,只是spannablestring可以显示更多的样式风格。 spannableString和SpannableStringBuilder 一个是一次性的,一个可多次修改。
SpannableStringBuilder span= new SpannableStringBuilder("花间一壶酒,独酌无相亲");
span通过setSpan(object obj,int start ,int end,int flags)来设置;
obj来设置风格样式,start,end表示下标,
作用范围end-start;
flags有四种属性分别如下:
Spanned.SPAN_EXCLUSIVE_INCLUSIVE: start不包含,end包含
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE:start,end都不包含
Spanned.SPAN_INCLUSIVE_EXCLUSIVE:包含start,不包含end
Spanned.SPAN_INCLUSIVE_INCLUSIVE:包含start,end
flags指的是对所标记前后的文本样式,也就是对新插入的字符是否显示相同样式 。在spannablestring中使用没用处。
插入的位置必须是start或者end,否则样式也不起作用。
1:背景色和前景色(字体颜色)
SpannableString sp1 = new SpannableString("花间一壶酒,独酌无相亲"); //设置文本背景色 sp1.setSpan(new BackgroundColorSpan(Color.parseColor("#ff0000")), 0, sp1.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE); //设置字体颜色 sp1.setSpan(new ForegroundColorSpan(Color.parseColor("#ffffff")), 0, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
2:设置字体大小
SpannableString sp2 = new SpannableString("花间一壶酒,独酌无相亲");
sp2.setSpan(new AbsoluteSizeSpan(18), 0, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//绝对大小 sp2.setSpan(new RelativeSizeSpan(2), 0, sp2.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//android默认字体大小的倍数
3:设置字体样式
sp2.setSpan(new StyleSpan(Typeface.BOLD), 0, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//粗体 sp2.setSpan(new StyleSpan(Typeface.ITALIC), 6, sp2.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//斜体 sp2.setSpan(new UnderlineSpan(), 0, sp2.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//下划线 sp2.setSpan(new TypefaceSpan("sans-serif"), 0, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); sp2.setSpan(new TypefaceSpan("serif"), 6, sp2.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
4:给部分文字增加点击事件
用到的是Clickablespan :
SpannableString sp3 = new SpannableString("君不见黄河之水天上来,奔流到海不复回"); sp3.setSpan(new ClickableSpan() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "君不见黄河之水天上来", Toast.LENGTH_LONG).show(); } }, 0, 10, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
textview.setText(sp3);
textview.setMovementMethod(LinkMovementMethod.getInstance());//必须加5:设置超链接(urlspan)
SpannableString sp4 = new SpannableString("项目地址,打电话,发短信"); sp4.setSpan(new URLSpan("https://github.com/zhjingjing/SpannerString"), 0, 2, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); //打开网页 sp4.setSpan(new URLSpan("tel:18337104423"), 3, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//打电话 sp4.setSpan(new URLSpan("smsto:18337104423"), 7, sp4.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//发短信 textview.setText(sp4); tv4.setMovementMethod(LinkMovementMethod.getInstance()); 6:imagespan
SpannableStringBuilder sp5=new SpannableStringBuilder("关关雎鸠,在河之洲洲"); Drawable drawable = getResources().getDrawable(R.mipmap.image); drawable.setBounds(0,0,100,100); sp5.setSpan(new ImageSpan(drawable),sp5.length()-1,sp5.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); tv5.setText(sp5);
最后附上地址: git地址
最后
以上就是明理歌曲为你收集整理的SpannableString 详解的全部内容,希望文章能够帮你解决SpannableString 详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复