美文网首页
SpannableString字符串拼接

SpannableString字符串拼接

作者: 草色陆连清 | 来源:发表于2019-11-07 15:41 被阅读0次

    最近接到了一个新的需求。客户要在一段文字说明中,分别在两处地方显示不同颜色,并且会触发不同的点击事件。一开始使用Lilinelayout布局,横向排列几个Textview,但是这种方法不灵活,且在分辨率较低的手机上会造成换行时,没办法从第一个Textview底下开始换行。在网上找了一下资料,发现用SpannableString可以完美实现上述需求:


    UI图.png

    我们需要实现的是上述的《用户协议》与《法律声明》显示黄色且分别响应不同的点击事件。XML中只用到了一个简单的Textview控件,故省略XML代码

            String textstring1 = "已阅读并同意";
            String textstring2 = "《用户协议》";
            String textstring3 = "和";
            String textstring4 = "《法律声明》";
            SpannableString ss1 = new SpannableString(textstring2);
            ss1.setSpan(new ClickableSpan() {
                @Override
                public void onClick(View view) {
                      //《用户协议》点击事件
                }
    
                @Override
                public void updateDrawState(TextPaint ds) {
                    ds.setUnderlineText(false);                                      //取消下划线
                    ds.setColor(mContext.getResources().getColor(R.color.yellow));   //设置字体颜色
                }
            },0,textstring2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    
            SpannableString ss2 = new SpannableString(textstring4);
            ss2.setSpan(new ClickableSpan() {
                @Override
                public void onClick(View view) {
                      //《法律声明》点击事件
                }
    
                @Override
                public void updateDrawState(TextPaint ds) {
                    ds.setUnderlineText(false);                                     //取消下划线
                    ds.setColor(mContext.getResources().getColor(R.color.yellow));  //设置字体颜色
    
                }
            },0,textstring4.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    
            //tvagree为Textview控件
            tvagree.setText(textstring1);
            tvagree.append(ss1);
            tvagree.append(textstring3);
            tvagree.append(ss2);
            tvagree.setMovementMethod(LinkMovementMethod.getInstance());
    

    相关文章

      网友评论

          本文标题:SpannableString字符串拼接

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