Android(安卓)中SpannableStringBuilder控制局部文本颜色和点击事件
16lz
2021-12-18
直接上代码
package com.lhl.qsmm.maskguidetest;import android.os.Bundle;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.text.Spannable;import android.text.SpannableString;import android.text.SpannableStringBuilder;import android.text.TextPaint;import android.text.method.LinkMovementMethod;import android.text.style.ClickableSpan;import android.text.style.ForegroundColorSpan;import android.view.View;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) findViewById(R.id.text); SpannableStringBuilder builder = new SpannableStringBuilder(); String s1 = "你好"; SpannableString sp1 = new SpannableString(s1); sp1.setSpan(new Clickable(new View.OnClickListener() { @Override public void onClick(View v) { //在这里添加点击事件 } }),0,s1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); ForegroundColorSpan fcs1 = new ForegroundColorSpan(ContextCompat.getColor(this,R.color.borline)); sp1.setSpan(fcs1,0,s1.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//设置字体的颜色 builder.append(sp1);//添加 String s2 = "安卓"; SpannableString sp2 = new SpannableString(s2); sp2.setSpan(new Clickable(new View.OnClickListener() { @Override public void onClick(View v) { //在这里添加点击事件 Toast.makeText(MainActivity.this, "点击", Toast.LENGTH_SHORT).show(); } }),0,s2.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); ForegroundColorSpan fcs2 = new ForegroundColorSpan(ContextCompat.getColor(this,R.color.brightred)); sp1.setSpan(fcs2,0,s1.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//设置字体的颜色 builder.append(sp2); mTextView.setText(builder); mTextView.setMovementMethod(LinkMovementMethod.getInstance());//加上这句话才有效果 mTextView.setHighlightColor(ContextCompat.getColor(this,R.color.touming));//去掉点击后的背景颜色为透明 } class Clickable extends ClickableSpan implements View.OnClickListener { private final View.OnClickListener mListener; public Clickable(View.OnClickListener mListener) { this.mListener = mListener; } @Override public void onClick(View v) { mListener.onClick(v); } @Override public void updateDrawState(TextPaint ds) { ds.setColor(ds.linkColor); ds.setUnderlineText(false); //去除超链接的下划线 } }}
结果 更多相关文章
- android 输入对话框
- Android中的系统栏
- 初探Android热修复——tinker接入
- Android(安卓)Menu 菜单用法 一看就懂
- android 通知栏点击事件及8.0适配
- 如何向android程序添加音效或者音频文件
- Android内核与主线linux内核的比较(Android对Linux内核的改动你知
- Android(安卓)你不知道的调试技巧(Debug操作汇总)
- android 中的ListView选中项的背景颜色怎么设置?