Android高亮TextView某个单词
迷茫
迷茫 2017-04-17 11:02:59
[Android讨论组]

想在TextView里高亮一些指定的单词。
就是浏览器里那种搜索高亮关键词的样子
EditView里做过高亮,TextView里怎么弄?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
大家讲道理

前两天同样遇到这个问题,后来解决了,使用Spannable即可搞定。

这里有一个参考案例:

package com.zhou.activity;  
  
import android.app.Activity;  
import android.graphics.Color;  
import android.os.Bundle;  
import android.text.Spannable;  
import android.text.SpannableString;  
import android.text.Spanned;  
import android.text.method.LinkMovementMethod;  
import android.text.style.BackgroundColorSpan;  
import android.text.style.ForegroundColorSpan;  
import android.text.style.StyleSpan;  
import android.text.style.URLSpan;  
import android.widget.TextView;  
  
public class TextViewLinkActivity extends Activity {  
    TextView myTextView;  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        myTextView = (TextView) this.findViewById(R.id.myTextView);  
          
        //创建一个 SpannableString对象  
        SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");  
        //设置超链接  
        sp.setSpan(new URLSpan("http://www.baidu.com"), 5, 7,  
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
        //设置高亮样式一  
        sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        //设置高亮样式二  
        sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);    
        //设置斜体  
        sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);  
        //SpannableString对象设置给TextView  
        myTextView.setText(sp);  
        //设置TextView可点击  
        myTextView.setMovementMethod(LinkMovementMethod.getInstance());  
    }  
}

原文链接:http://lovezhou.iteye.com/blog/905446

Spannalbe文档:

Spannalbe
This is the interface for text to which markup objects can be attached and detached. Not all Spannable classes have mutable text; see Editable for that.

setSpan方法:

public abstract void setSpan (Object what, int start, int end, int flags)

Since: API Level 1
Attach the specified markup object to the range start…end of the text, or move the object to that range if it was already attached elsewhere. See Spanned for an explanation of what the flags mean. The object can be one that has meaning only within your application, or it can be one that the text system will use to affect text display or behavior. Some noteworthy ones are the subclasses of CharacterStyle and ParagraphStyle, and TextWatcher and SpanWatcher.

http://developer.android.com/referenc...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号