同一个 TextView 设置多个样式多个点击事件

先看样式图片( 评论内容为一个 TextView ):


xml 文件中不给出代码了,就是一个容器里面有一个 TextView ;

下面是 Activity 代码:

        String oneName = "直男";//第一个人
        String twoName = "污女";//第一个人
        String commentContext = "你在干嘛";//第一个人回复第二个人的内容
        int oneNameSize = oneName.length();
        int twoNameSize = twoName.length();
    SpannableString spannableInfo = new SpannableString(oneName + "回复" + twoName + ":" + commentContext);
        //第一个人(直男)的样式,点击事件
        spannableInfo.setSpan(new ClickableSpan() {
            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.parseColor("#FFFFAA00"));//设置颜色
                ds.setUnderlineText(false);//去掉下划线
            }
            @Override
            public void onClick(View view) {
//设置直男的点击事件
                Log.e("=====","直男");
            }
        }, 0, oneNameSize, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //"回复"两个字的样式
        spannableInfo.setSpan(new ClickableSpan() {
            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.parseColor("#FF151515"));//设置颜色
                ds.setUnderlineText(false);//去掉下划线
            }
            @Override
            public void onClick(View widget) {
            }
        }, oneNameSize , twoNameSize + 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //第2个人(污女)的样式,点击事件
        spannableInfo.setSpan(new ClickableSpan() {
            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.parseColor("#FFFFAA00"));//设置颜色
                ds.setUnderlineText(false);//去掉下划线
            }
            @Override
            public void onClick(View view) {
//设置污女的点击事件
                Log.e("=====","污女");
            }
        }, twoNameSize + 2, oneNameSize + twoNameSize + 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //内容的点击事件和样式
        spannableInfo.setSpan(new ClickableSpan() {
            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.parseColor("#FF151515"));//设置颜色
                ds.setUnderlineText(false);//去掉下划线
            }
            @Override
            public void onClick(View view) {
//设置内容的点击事件
                Log.e("=====","内容");
            }
        }, oneNameSize + twoNameSize + 2, spannableInfo.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        textview.setHighlightColor(Color.TRANSPARENT); //设置点击后的颜色为透明,否则会一直出现高亮
        textview.append(spannableInfo);
        textview.setMovementMethod(LinkMovementMethod.getInstance());//开始响应点击事件

猜你喜欢

转载自blog.csdn.net/wuqingsen1/article/details/80832650