import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 找到控件
final TextView tvContent = findViewById(R.id.tv_content);
// 内容文本
String text1 = "您好,我是张三,关于房地产的任何问题,我都可以为您解答。";
String text2 = "\n点击邮件联系";
String text3 = "\n点击电话联系";
String text = text1 + text2 + text3;
SpannableStringBuilder builder = new SpannableStringBuilder(text);
builder.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
// 点击了邮件联系
Toast.makeText(MainActivity.this, "点击了邮件联系", Toast.LENGTH_SHORT).show();
}
@Override
public void updateDrawState(TextPaint ds) {
// 设置颜色
ds.setColor(Color.BLUE);
// 设置下划线
ds.setUnderlineText(true);
// 需要重绘视图,否则会有按下去的颜色印记
tvContent.postInvalidate();
}
}, text1.length() + "\n".length(), text1.length() + text2.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
// 点击了电话联系
Toast.makeText(MainActivity.this, "点击了电话联系", Toast.LENGTH_SHORT).show();
}
@Override
public void updateDrawState(TextPaint ds) {
// 设置颜色
ds.setColor(Color.RED);
// 设置下划线
ds.setUnderlineText(true);
// 需要重绘视图,否则会有按下去的颜色印记
tvContent.postInvalidate();
}
}, text1.length() + text2.length() + "\n".length(), text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 显示文本
tvContent.setText(builder);
// 设置MovementMethod此TextView的处理箭头键移动(如果不设置ClickableSpan则无法点击)
tvContent.setMovementMethod(LinkMovementMethod.getInstance());
}
}
运行效果图: