Android TextView设置部分字体颜色改变,部分字体背景改变

原创 2016年05月31日 17:39:07

需求:设置某一行的文本内容,某一行的文本的背景固定为某种颜色。

这种效果类似于html中Span的元素的效果


效果的实现主要还是SpannableStringBuilder,实现代码:

1、设置部分字体颜色的改变

    /**
     * 单独设置内部字体颜色
     * @param text
     * @param keyworld
     * @return
     */
    public static SpannableStringBuilder getSpannableTextColor(String text, String keyworld){
        SpannableStringBuilder spannableStringBuilder=new SpannableStringBuilder(text);
        if(text.contains(keyworld)){
            int spanStartIndex=text.indexOf(keyworld);
            int spacEndIndex=spanStartIndex+keyworld.length();
            spannableStringBuilder.setSpan(new ForegroundColorSpan(Color.RED),spanStartIndex,spacEndIndex, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
        }
        return spannableStringBuilder;
    }
2、设置部分字体背景的改变

    /**
     *单独设置内部字体背景颜色
     * @param text
     * @param keyworld
     * @return
     */
    public static SpannableStringBuilder getSpannableTextBackgroundColor(String text, String keyworld){
        SpannableStringBuilder spannableStringBuilder=new SpannableStringBuilder(text);
        if(text.contains(keyworld)){
            int spanStartIndex=text.indexOf(keyworld);
            int spacEndIndex=spanStartIndex+keyworld.length();
            spannableStringBuilder.setSpan(new BackgroundColorSpan(Color.RED),spanStartIndex,spacEndIndex,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        return spannableStringBuilder;
    }

3、实例代码

demo下载

3、关于SpannableStringBuilder

spannableStringBuilder 用法

/用颜色标记文本

ss.setSpan(new ForegroundColorSpan(Color.RED), 0, 2,     

//setSpan时需要指定的 flag,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括). Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

//用超链接标记文本 

 ss.setSpan(new URLSpan("tel:4155551212"), 2, 5,   Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  

 //用样式标记文本(斜体)  

ss.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 5, 7,    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);      

//用删除线标记文本     

ss.setSpan(new StrikethroughSpan(), 7, 10,  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        

//用下划线标记文本

 ss.setSpan(new UnderlineSpan(), 10, 16,  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  

//用颜色标记 

ss.setSpan(new ForegroundColorSpan(Color.GREEN), 10, 13,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     

//获取Drawable资源      

Drawable d = getResources().getDrawable(R.drawable.icon),d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());         

//创建ImageSpan          

ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);      

//用ImageSpan替换文本     

ss.setSpan(span, 18, 19, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);



版权声明:本文为博主原创文章,未经博主允许不得转载。

Android中TextView中部分文字有不同颜色的实现

开通博客也已有一段时间了,终于决定开始写一些自己在做项目的时候的一些见解。个人技术有限,不喜勿喷哈!如有写的不对的地方,欢迎大家多给建议。 在做项目的时候,遇到过一行文字有两种颜色。在菜鸟的时候直接会...
  • youngmy5
  • youngmy5
  • 2015年11月24日 14:20
  • 25935

给TextView加上多彩效果:改变部分字体的大小和颜色

转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/18363899前言在实际使用中,有时候会遇到特殊需求,比如pm突发奇想,想把T...
  • singwhatiwanna
  • singwhatiwanna
  • 2014年01月16日 18:30
  • 30125

android-修改TextView中部分文字的颜色

textView = (TextView) findViewById(R.id.textview); SpannableStringBuilder builder = new Spannable...
  • centralperk
  • centralperk
  • 2013年03月14日 20:36
  • 90379

ImageView、TextView设置背景色三种方式

设置背景颜色ImageView.setBackgroundColor(android.graphics.Color.parseColor("#ff6b00"));ImageView.setBackgr...
  • hello_1s
  • hello_1s
  • 2016年12月16日 10:26
  • 3912

关于TextView中,设置指定部分文字改变颜色,和指定部分文字点击事件

关于TextView中,设置指定部分文字改变颜色,和指定部分文字点击事件
  • u013676055
  • u013676055
  • 2016年03月05日 16:16
  • 6242

TextView部分字体变红

android textview改变部分文字的颜色和string.xml中文字的替换   一:TextView组件改变部分文字的颜色:   TextView textView = (TextVie...
  • huangpeigui
  • huangpeigui
  • 2014年06月19日 17:54
  • 1825

android TextView 设置部分文字背景色和文字颜色

通过SpannableStringBuilder来实现,它就像html里边的元素改变指定文字的文字颜色或背景色   ? 1 2 3 4 ...
  • mr_orange_klj
  • mr_orange_klj
  • 2015年04月17日 19:30
  • 1265

TextView图文混排,设置部分字体背景色

效果图如下:                                    一。实现方式              android对于TextView的图文混排有好几种方式,我采用的是...
  • qq_16782391
  • qq_16782391
  • 2017年06月01日 10:46
  • 538

android 动态java代码设置背景以及字体等颜色

动态设置颜色今天碰到个奇怪的事情,在设置动态设置TextView以及Button背景颜色的时候在java代码中设置编译运行时候竟然出现的颜色和我color文件中设置的颜色不一样,而我在xml中设置的颜...
  • u010023795
  • u010023795
  • 2016年11月26日 18:34
  • 5455

Android 调整控件位置和大小(以textView为例,并设置字体与背景颜色)

1:控件调整位置 代码实现:以textview为例 TextView mTextView = new TextView(context); mTextView.setPadding(left, top...
  • ws1836300
  • ws1836300
  • 2016年06月24日 11:35
  • 6697
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android TextView设置部分字体颜色改变,部分字体背景改变
举报原因:
原因补充:

(最多只允许输入30个字)