文本操作类SpannableString的使用

来源:互联网 发布:日语汉字注音软件 编辑:程序博客网 时间:2024/06/03 23:50

今天来看下textview到底有多强,直接上代码:

布局的话很简单,就是垂直线性布局里面放了9个textview,这里我就不放出来了


public classMainActivityextendsAppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.tv1);
TextView textView2 = (TextView) findViewById(R.id.tv2);
TextView textView3 = (TextView) findViewById(R.id.tv3);
TextView textView4 = (TextView) findViewById(R.id.tv4);
TextView textView5 = (TextView) findViewById(R.id.tv5);
TextView textView6 = (TextView) findViewById(R.id.tv6);
TextView textView7 = (TextView) findViewById(R.id.tv7);
TextView textView8 = (TextView) findViewById(R.id.tv8);
TextView textView9 = (TextView) findViewById(R.id.tv9);
TextView textView10 = (TextView) findViewById(R.id.tv10);
//分别设置颜色
SpannableString spannableString = newSpannableString("lebron james");
spannableString.setSpan(newForegroundColorSpan(Color.RED),0,6,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
spannableString.setSpan(newForegroundColorSpan(Color.BLUE),7,12,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
textView.append(spannableString);
//分别设置点击事件
SpannableString spannableString1 = newSpannableString("kobe james");
spannableString1.setSpan(newClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this,"kobe",Toast.LENGTH_SHORT).show();
}
},0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
spannableString1.setSpan(newClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this,"james",Toast.LENGTH_SHORT).show();
}
},5,10,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
textView2.append(spannableString1);
//设置textview可点击
textView2.setMovementMethod(LinkMovementMethod.getInstance());

//分别设置URL
SpannableString spannableString2 = newSpannableString("百度,网易");
spannableString2.setSpan(newURLSpan("http://www.baidu.com"),0,2,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannableString2.setSpan(newURLSpan("http://www.baidu.com"),3,spannableString2.length(),Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
textView3.append(spannableString2);
//设置textview可点击
textView3.setMovementMethod(LinkMovementMethod.getInstance());

//设置删除线
SpannableString spannableString3 = newSpannableString("删除线");
spannableString3.setSpan(newStrikethroughSpan(),0,spannableString3.length(),Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
textView4.append(spannableString3);

//设置下标
SpannableString spannableString4 = newSpannableString("(x1+x2)2=x12+x22+2*x1x2");
spannableString4.setSpan(newSubscriptSpan(),2,3,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

spannableString4.setSpan(newSubscriptSpan(),5,6,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannableString4.setSpan(newSubscriptSpan(),10,11,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannableString4.setSpan(newSubscriptSpan(),14,15,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannableString4.setSpan(newSubscriptSpan(),20,21,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannableString4.setSpan(newSubscriptSpan(),22,23,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

//设置上标
spannableString4.setSpan(newSuperscriptSpan(),7,8,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannableString4.setSpan(newSuperscriptSpan(),11,12,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannableString4.setSpan(newSuperscriptSpan(),15,16,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
textView5.append(spannableString4);

//设置下滑线
SpannableString spannableString5 = newSpannableString("下划线");
spannableString5.setSpan(newUnderlineSpan(),0,spannableString5.length(),Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
textView6.append(spannableString5);

//设置基于X轴的缩放
SpannableString spannableString6 = newSpannableString("基于X轴的缩放");
spannableString6.setSpan(newScaleXSpan(4),0,spannableString6.length(),Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
textView7.append(spannableString6);

//设置各种点击事件
SpannableString spannableString7 = newSpannableString("打电话,发短信,发邮件,上网");
spannableString7.setSpan(newURLSpan("tel:13515135666"),0,3,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannableString7.setSpan(newURLSpan("smsto:13515135666"),4,7,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannableString7.setSpan(newURLSpan("mailto:13515135666@qq.com"),8,11,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannableString7.setSpan(newURLSpan("http://lol.qq.com/"),12,spannableString7.length(),Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
textView8.append(spannableString7);
textView8.setMovementMethod(LinkMovementMethod.getInstance());
//设置图片

SpannableString spannableString8 = newSpannableString("这是一张图片哈哈哈");
spannableString8.setSpan(newDynamicDrawableSpan() {
@Override
publicDrawablegetDrawable() {
Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher);
drawable.setBounds(0,0,100,100);
returndrawable;
}
},5,spannableString8.length(),Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
textView9.append(spannableString8);
}
}