美文网首页
如何在TextView文本中高亮显示

如何在TextView文本中高亮显示

作者: 破荒之恋 | 来源:发表于2017-03-11 15:38 被阅读39次

高亮显示文本,使用正则表达式来区分想显示的字符串

/**
     * 高亮显示
     * @param spannedString 
     * @param str  字符串
     * @param pattern  匹配正则表达式
     */
    public static void HightLignt(SpannableString spannedString,String str,Pattern pattern){
        
        List<HashMap<String,String>> list=getStartAndEnd(str,pattern);
        for (HashMap<String,String> map:list){

            /**
             * 文本高亮显示 TODO
             */
            ForegroundColorSpan foregroundColorSpan=new ForegroundColorSpan(Color.BLUE);
            spannedString.setSpan(foregroundColorSpan,Integer.parseInt(map.get(START)),
                    Integer.parseInt(map.get(END)), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        }
    }

获取符合正则表达式List集合
/**
     *  匹配正则表达式, 获取头跟尾
     * @param str    字符串
     * @param pattern 正则表达式
     * @return
     */
    public List<HashMap<String,String>> getStartAndEnd(String str,Pattern pattern){

         List<HashMap<String,String>> list=new ArrayList<>();

        Matcher matcher=pattern.matcher(str);
        while (matcher.find())  {

            HashMap<String, String> map = new HashMap<String, String>();
            map.put("start",matcher.start()+"");
            map.put("end",matcher.end()+"");

            list.add(map);
        }

        return list;
    }

在文本中添加图片

 /**
         * 文本中添加图片
         *//*
        Drawable drawable=mContext.getResources().getDrawable(R.mipmap.main_switch);
        drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
        ImageSpan imageSpan=new ImageSpan(drawable);
        spannedString.setSpan(imageSpan,11,15,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);*/

最后提示:不管在那个文本中使用高亮,必须这样设置才有效果

   SpannableString spannableString = new SpannableString(str);
    textview.setText(spannableString);

相关文章

网友评论

      本文标题:如何在TextView文本中高亮显示

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