安卓笔记---TextView部分字符串点击事件

一需求

每一个app都需要做一个类似这个东西在这里插入图片描述

二实现

1.可用使用控件拼接,嗯…不太行,手机设置调整字体大小和显示大小的时候,这时这两个控件的拼接就会出点问题

2.可用使用文本超链接点击textview的一部分字体,类似QQ空间或者微博高亮度字体的跳转
xml文件

 <TextView
        android:id="@+id/user_protocol"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        />

java代码

TextView user_protocol_ok=findViewById(R.id.user_protocol);

//创建一个SpannableString用来存放要显示的字符串
SpannableString spannableString=new SpannableString("已阅读同意用户协议和隐私条款");
 //给5-14个字符串设置点击事件
         spannableString.setSpan(new ClickableSpan() {             
            @Override
            public void onClick(@NonNull View widget) {
                //这写点击事件的逻辑
            }
        },5,14,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

 //给5-14个字符串设置文本颜色
   spannableString.setSpan(new ForegroundColorSpan(getColor(R.color.colorPrimaryDark)),5,14,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
      //然后把spannableString放进到Text中,
        user_protocol_ok.setText(spannableString);
        //最后设置可点击
        user_protocol_ok.setMovementMethod(LinkMovementMethod.getInstance());

这就实现了相关需求功能

三相关知识

SpannableString

实现效果时用到了这个类,它和Strings一样都是一种字符串类型,可用先设置好SpannableString 在把它放到TextView.set(SpannableString )中
使用spannableString.setSpan(Object what, int start, int end, int flags);方法可用设置许多不同的样式效果.
该方法的第一个参数就是所要设置的格式比如
ClickableSpan 就是点击事件
BackgroundColorSpan 看单词就知道背景色
ForegroundColorSpan 文本颜色
UnderlineSpan 下划线
URLSpan 文本超链接
RelativeSizeSpan 相对大小(和TextView原有的文字大小相对比)
AbsoluteSizeSpan 绝对大小(直接用具体数值指定文字大小)
SuperscriptSpan 上标
ImageSpan 插入图片
DynamicDrawableSpan 设置图片
…其他的请查阅API

第二个和第三个是字符串的起始下标和结束下标

第四个参数有四种选择
Spannable. SPAN_INCLUSIVE_EXCLUSIVE 在这段文本前部插入新的文本会应用该样式,而在文本后部插入新文本则不会应用该样式
Spannable. SPAN_INCLUSIVE_INCLUSIVE 在这段文本前部插入新的文本会应用该样式,在文本后部插入新文本也会应用该样式
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 比较常用,在这段文本前部插入新的文本不会应用该样式,在文本后部插入新文本也不会应用该样式
Spanned.SPAN_EXCLUSIVE_INCLUSIVE 在这段文本前部插入新的文本不会应用该样式,在文本后部插入新文本会应用该样式

SpannableStringBuilder

String的拼接可用使用StringBuilder
SpannableString 也可以使用SpannableStringBuilder拼接实现 QQ空间点赞和点赞人的显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值