美文网首页android 技术知识
android 中实现TextView文件局部高亮并且可以点击

android 中实现TextView文件局部高亮并且可以点击

作者: 追梦小乐 | 来源:发表于2018-10-16 10:08 被阅读6次

    1、MyClickSpan .java文件

    public class MyClickSpan extends ClickableSpan {
    
        private int mHighLightColor = Color.RED;
    
        private boolean mUnderLine = false;
    
        private View.OnClickListener mClickListener;
    
    
        public MyClickSpan(View.OnClickListener listener)
    
        {
    
            this.mClickListener = listener;
    
        }
    
    
        public MyClickSpan(int color, boolean underline, View.OnClickListener listener)
    
        {
    
            this.mHighLightColor = color;
    
            this.mUnderLine = underline;
    
            this.mClickListener = listener;
    
        }
    
    
        @Override
    
        public void onClick(View widget)
    
        {
    
            if (mClickListener != null)
    
                mClickListener.onClick(widget);
    
        }
    
    
        @Override
    
        public void updateDrawState(TextPaint ds)
    
        {
    
            ds.setColor(mHighLightColor);
    
            ds.setUnderlineText(mUnderLine);
    
        }
    
    }
    
    

    2、使用方法

      public static void setTextHighLightWithClick(TextView tv, String text, String keyWord, View.OnClickListener listener)
        {
    
            tv.setClickable(true);
    
            tv.setHighlightColor(Color.TRANSPARENT);
    
            tv.setMovementMethod(LinkMovementMethod.getInstance());
    
    
            SpannableString s = new SpannableString(text);
    
            Pattern p = Pattern.compile(keyWord);
    
            Matcher m = p.matcher(s);
    
            while (m.find())
    
            {
    
                int start = m.start();
    
                int end = m.end();
    
                s.setSpan(new MyClickSpan(listener), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    
            }
    
    
            tv.setText(s);
    
        }
    
    
    
            setTextHighLightWithClick(tvRotate, "若照片显示为反转,请点击此处\"旋转\",再进行提交", "\"旋转\"", new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   // to do
                }
            });
    

    相关文章

      网友评论

        本文标题:android 中实现TextView文件局部高亮并且可以点击

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