美文网首页
Android 在TextView中加入多个点击文本区域

Android 在TextView中加入多个点击文本区域

作者: hao_developer | 来源:发表于2020-01-17 15:32 被阅读0次

    Android做注册功能或者其他功能时,一般会需要在一个TextView中,加入多个可以点击的区域,例如下图中的《用户协议》和《隐私政策》,需要有点击事件:


    image.png

    很多人会做多个Textview拼接起来,这样其实很麻烦,其实使用一个Android 自带的功能就可以做了。如下:

           String str = "注册即代表已阅读并遵循《用户协议》和《隐私政策》";
     
            SpannableStringBuilder ssb = new SpannableStringBuilder();
            ssb.append(str);
     
            final int start = str.indexOf("《");//第一个出现的位置
            ssb.setSpan(new ClickableSpan() {
     
                @Override
                public void onClick(View widget) {
                    Toast.makeText(mContext, "《用户协议》",
                            Toast.LENGTH_SHORT).show();
                }
     
                @Override
                public void updateDrawState(TextPaint ds) {
                    super.updateDrawState(ds);
                    ds.setColor(getResources().getColor(R.color.text_click_blue));       //设置文件颜色
                    // 去掉下划线
                    ds.setUnderlineText(false);
                }
     
            }, start, start + 6, 0);
     
            final int end = str.lastIndexOf("《");//最后一个出现的位置
            ssb.setSpan(new ClickableSpan() {
     
                @Override
                public void onClick(View widget) {
                    Toast.makeText(mContext, "《隐私政策》",
                            Toast.LENGTH_SHORT).show();
                }
     
                @Override
                public void updateDrawState(TextPaint ds) {
                    super.updateDrawState(ds);
                    ds.setColor(getResources().getColor(R.color.text_click_blue));       //设置文子颜色
                    // 去掉下划线
                    ds.setUnderlineText(false);
                }
     
            }, end, end + 6, 0);
     
         textview.setMovementMethod(LinkMovementMethod.getInstance());//加上这句话才有效果
         textview.setText(ssb, TextView.BufferType.SPANNABLE);//加上这句话才有效果
         textview.setHighlightColor(ContextCompat.getColor(this,R.color.touming));//去掉点击后的背景颜色为透明
    

    相关文章

      网友评论

          本文标题:Android 在TextView中加入多个点击文本区域

          本文链接:https://www.haomeiwen.com/subject/zhnczctx.html