zoukankan      html  css  js  c++  java
  • 设置指定文字的颜色

    有时候我们经常需要设定指定文字的颜色,比如查询到的文字设置成和其它不一样的颜色,高亮显示,刚刚我试了效果还不错,特放上来留着笔记,以后直接来copy就可以了,我是个懒虫,核心代码如下

    //test====================================
    这些我是写在BaseAdapter里面的getView方法里的,因这些个数据是在listView中的,所以设了几个标记
    if(isColor && null != strColor && (list.get(position).getContent()).lastIndexOf(strColor)!= -1){
    LogWrapper.i("longlong", "test===================");
    SpannableString span = new SpannableString(list.get(position).getContent());


    span.setSpan(new ForegroundColorSpan(Color.GREEN), 
    (list.get(position).getContent()).lastIndexOf(strColor),
    (list.get(position).getContent()).lastIndexOf(strColor)+strColor.length(), 
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    holder.content.setText(span);
    }
    //test=================================================

    else{
    LogWrapper.i("longlong","test===================else");
    holder.content.setText(list.get(position).getContent());
    }

    //下面这个是从网上得来的,觉得还不错,也试了下,他的是过滤掉了其它不匹配的字符,觉得有用,收藏如下

    TextView tv = (TextView) findViewById(R.id.hello);
    SpannableString s = new SpannableString(getResources().getString(R.string.linkify));

    Pattern p = Pattern.compile("abc");


    Matcher m = p.matcher(s);

    while (m.find()) {
    int start = m.start();
    int end = m.end();
    s.setSpan(new ForegroundColorSpan(Color.RED), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
    tv.setText(s);

    //下面这个听说是前景色用的,我还没试过,觉得有用,先收下了

     

    1. SpannableStringBuilder style =newSpannableStringBuilder("test Height light");
    2. //参数一:高亮颜色[ForegroundColorSpan前景色]
    3. //from:高亮开始
    4. //to:高亮结束
    5. style.setSpan(newForegroundColorSpan(color),from, to,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    6. (TextView)view.setText(style);

    //下面这些个没试过,听说效果更牛,这么晚了,先不试了,先收了,

    可以使用以下两种方法来实现:
    1.用Html类的fromHtml()方法格式化要放到TextView里的文字。这种方法不仅能够高亮部分文字,而且还能够使用HTML里面方式来格式化文字,显示出各种效果。

    1. TextView.setText(Html.fromHtml("<font color=#FF0000>hello</font>"));
     

    上述代码把hello设置成红色。
    2.使用Spannable或实现它的类,如SpannableString。Spannable对象也可以实现一样的效果

       
    1. SpannableString ss =newSpannableString("abcdefgh");
    2. ss.setSpan(newBackgroundColorSpan(Color.RED),2,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    3. TextView.setText(ss);
     

    上述代码把[2,4)之间的字符设置成红色,也就是c和d。


  • 相关阅读:
    Java第三季
    LeetCode(10)Regular Expression Matching
    LeetCode(9)Palindrome Number
    shell基础编程
    LeetCode(8)String to Integer (atoi)
    使用python绘制词云
    我的书单
    LeetCode(7)Reverse Integer
    获取新浪微博的Access_token
    c语言中,常见数据类型的字节数
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3241119.html
Copyright © 2011-2022 走看看