给TextView添加部分内容可点击的两种实现方式

第一种:

//点击后的背景颜色(HighLightColor)属于TextView的属性,//Android4.0以上默认是淡绿色,低版本的是黄色。解决方法就是通过重新设置文字背景为透明色

textView.setHighlightColor(getResources().getColor(android.R.color.transparent));

SpannableString spanableInfo = new SpannableString("这是一个测试"+": "+"点击我");

//通过下标来确定哪些字体可点击

spanableInfo.setSpan(newClickable(clickListener),8,11,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

textView.setText(spanableInfo);textView.setMovementMethod(LinkMovementMethod.getInstance());

//点击的响应事件

private OnClickListener clickListener=new OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(MainActivity.this, "点击成功....",Toast.LENGTH_SHORT).show();}

};

class Clickable extends ClickableSpan{

private final View.OnClickListener mListener;

public Clickable(View.OnClickListener l) {

mListener = l;

}

/*** 重写父类点击事件*/

@Override

public void onClick(View v) {

mListener.onClick(v);

}

/*** 重写父类updateDrawState方法 我们可以给TextView设置字体颜色,背景颜色等等...*/

@Override

public void updateDrawState(TextPaint ds) {

ds.setColor(getResources().getColor(R.color.video_comment_like_number));}//可点击文字的颜色

ds.setUnderlineText(true);//给可点击文字添加下划线

}

这就完成了,要是不知道为什么点击之后文字有背景色,你并不需要的话,请看文章开头.

第二种方法: 通过TextView的一个属性append添加到尾部

SpannableString clickString2 = new SpannableString("速戳查看");
clickString2.setSpan(new ClickableSpan() {
    @Override
    public void onClick(View widget) {
        //点击处理事件

    }

    @Override
    public void updateDrawState(TextPaint ds) {
        super.updateDrawState(ds);
        ds.setColor(Color.parseColor("#FD871E")); //设置颜色
    }
}, 0, clickString2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(list.get(position).content+"   ");//先赋值你的信息
textview.append(clickString2);  //再把点击事件放到后面
textview.setMovementMethod(LinkMovementMethod.getInstance());

这两种方法主要处理样式差不多,第一种合着来,可确定要设置文字的位置,第二种分着来,只能添加到尾部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值