核心源码:
public class MainActivity extends AppCompatActivity {
TextView textView1;
TextView textView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView1= (TextView) findViewById(R.id.text1);
textView2= (TextView) findViewById(R.id.text2);
String text1="这是第一个Text";
String text2="这是第二个Text";
SpannableString spannableString=new SpannableString(text1);
spannableString.setSpan(new NoLineClickableSpan() {
@Override
public void onClick(View widget) {
//单击跳转
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
},2,text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置前景色
spannableString.setSpan(new ForegroundColorSpan(Color.BLUE),2,text1.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
SpannableString spannableString2=new SpannableString(text2);
spannableString2.setSpan(new NoLineClickableSpan() {
@Override
public void onClick(View widget) {
Intent intent=new Intent(MainActivity.this,Main3Activity.class);
startActivity(intent);
}
},0,text2.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString2.setSpan(new ForegroundColorSpan(Color.BLUE),0,text2.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView1.setText(spannableString);
textView1.setMovementMethod(LinkMovementMethod.getInstance());
textView2.setText(spannableString2);
textView2.setMovementMethod(LinkMovementMethod.getInstance());
}
}
去除SpannableString下划线 只需继承extends ClickableSpan:
package com.example.my.textviewdemo;
import android.text.TextPaint;
import android.text.style.ClickableSpan;
import android.view.View;
/**
* Created by BuLuSiLi on 2016/10/7.
*/
public class NoLineClickableSpan extends ClickableSpan{
public NoLineClickableSpan() {
super();
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(ds.linkColor);
ds.setUnderlineText(false);
}
@Override
public void onClick(View widget) {
}
}
其中最关键的一句就是ds.setUnderlineText(false); 相必大家看到这里就应该明白为什么了,它做的操作就是把下划线去掉,设置为false。