首页 > 其他分享 >Android TextView 设置超链接、关键字高亮等效果

Android TextView 设置超链接、关键字高亮等效果

时间:2023-05-09 10:32:56浏览次数:45  
标签:EXCLUSIVE 高亮 tv SpannableString 超链接 设置 new Android TextView


之前做TextView关键字高亮效果,使用的是Html.fromHtml(String source)方法,然后通过TextView的setText(CharSequence text)方法来显示


Android TextView 设置超链接、关键字高亮等效果_高亮

后来测试此方法在部分手机上显示有问题,如Nexus4,华为P6等等。于是乎只能继续寻找别的解决办法了,在这里Mark一下。

这里用到了SpannableString类


Android TextView 设置超链接、关键字高亮等效果_java_02

使用 SpannableString.setSpan(Object what, int start, int end, int flags)方法


Android TextView 设置超链接、关键字高亮等效果_背景颜色_03

1、创建超链接


[java]  view plain  copy


1. /**
2.      * 创建一个超链接
3.      */  
4. private void createLink() {  
5. // 创建一个 SpannableString对象  
6. new SpannableString("百度手机卫士");  
7. // 设置超链接  
8. new URLSpan("http://www.baidu.com"), 0, 2,  
9.                 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
10.           
11.         tv_content1.setText(sp);  
12. //设置TextView可点击    
13.         tv_content1.setMovementMethod(LinkMovementMethod.getInstance());    
14.     }




2、高亮某一段文字的背景


[java]  view plain  copy



1. //高亮背景颜色  
2. private void backgroundHight(){  
3. // 创建一个 SpannableString对象  
4. new SpannableString("祝大家新年快乐");  
5. //设置背景颜色  
6. new BackgroundColorSpan(Color.RED), 3 ,5,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
7.         tv_content2.setText(sp);  
8. //设置TextView可点击    
9.         tv_content2.setMovementMethod(LinkMovementMethod.getInstance());    
10.     }




3、高亮某段文字


[java]  view plain  copy


    1. //高亮字体颜色  
    2. private void foregroundHight(){  
    3. // 创建一个 SpannableString对象  
    4. new SpannableString("祝大家新年快乐");  
    5. //设置背景颜色  
    6. new ForegroundColorSpan(Color.parseColor("#ff6600")), 3 ,5,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
    7. //      sp.setSpan(new ForegroundColorSpan(Color.YELLOW), 3 ,5,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
    8.         tv_content3.setText(sp);  
    9. //设置TextView可点击    
    10.         tv_content3.setMovementMethod(LinkMovementMethod.getInstance());    
    11.     }




    4、设置斜体


    [java]  view plain  copy



    1. //斜体  
    2. private void boldItalicHight(){  
    3. // 创建一个 SpannableString对象  
    4. new SpannableString("新年快乐天天开心 哈哈哈哈哈哈");  
    5. //      SpannableString sp = new SpannableString("Happy New Year 天天开心 哈哈哈哈哈哈");  
    6. //设置背景颜色  
    7. new StyleSpan(Typeface.BOLD_ITALIC), 6 ,10,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
    8.         tv_content4.setText(sp);  
    9. //设置TextView可点击    
    10.         tv_content4.setMovementMethod(LinkMovementMethod.getInstance());    
    11.     }



    这里设置的斜体只对 英文起作用,汉字没有斜体效果,如果有人知道原因,麻烦在下面回复我一下,谢谢!



    5、设置下划线


    [java]  view plain  copy



    1. //下划线  
    2. private void underLineHight(){  
    3. // 创建一个 SpannableString对象  
    4. new SpannableString("祝大家新年快乐");  
    5. //设置背景颜色  
    6. new UnderlineSpan(), 3 ,5,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
    7.         tv_content5.setText(sp);  
    8. //设置TextView可点击    
    9.         tv_content5.setMovementMethod(LinkMovementMethod.getInstance());    
    10.     }




    6、设置中划线


    [java]  view plain  copy



      1. //中划线  
      2. private void strikethroughHight(){  
      3. // 创建一个 SpannableString对象  
      4. new SpannableString("祝大家新年快乐");  
      5. //设置背景颜色  
      6. new StrikethroughSpan(), 3 ,5,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
      7.         tv_content6.setText(sp);  
      8. //设置TextView可点击    
      9.         tv_content6.setMovementMethod(LinkMovementMethod.getInstance());    
      10.     }




      7、高亮一段文字中指定的全部关键字


      [java]  view plain  copy



      1. /**
      2.      * 高亮某个关键字,如果有多个则全部高亮
      3.      */  
      4. private void highlightKeyword() {  
      5.           
      6. "KTV风暴KTV";  
      7. new SpannableString(str);  
      8.           
      9. "KTV");  
      10.         Matcher m = p.matcher(str);  
      11.   
      12. while (m.find()) {  //通过正则查找,逐个高亮  
      13. int start = m.start();  
      14. int end = m.end();  
      15. new ForegroundColorSpan(Color.parseColor("#ff6600")), start ,end,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
      16.         }  
      17.         tv_content7.setText(sp);  
      18.     }
      1.  




      运行效果


      Android TextView 设置超链接、关键字高亮等效果_背景颜色_04

      标签:EXCLUSIVE,高亮,tv,SpannableString,超链接,设置,new,Android,TextView
      From: https://blog.51cto.com/u_16099425/6257448

      相关文章

      • 解Android系统的进程间通信原理(二)----RPC机制(转)
        解Android系统的进程间通信原理(二)----RPC机制理解Android系统中的轻量级解决方案RPC的原理,需要先回顾一下JAVA中的RMI(RemoteMethodInvocation)这个易于使用的纯JAVA方案(用来实现分布式应用)。有关RMI的相关知识,可以通过下图来归纳:Android中的RPC也是参考了JAVA中......
      • android native jni 代码
        数组的常用操作:  对象的常用操作: 另外 这个里面有JNI各个方法的说明 可以当做api 2、推荐一个网址 里面关于jni的学习内容比较多    ===============================================================================================================//找到类......
      • Android系统中自带的图标&一些预定义样式&参考颜色值
        Android系统中自带了很多图标,我们的程序可以方便使用。Android™1.5android.R.drawableIconResourceshttp://since2006.com/android/1.5-drawables.phpAndroid™1.6android.R.drawableIconResourceshttp://since2006.com/android/1.6-drawables.ph......
      • Android学习之RecyclerView
        RecyclerView是android-support-v7-21版本中新增的一个Widget,官方介绍RecyclerView是ListView的升级版本,更加先进和灵活。开发环境 -IDE:ADT -SDK:AndroidL首先在AndroidSDKManager上下载AndroidSupportRepository,它会在sdk/extras/android目录下生成m2reposito......
      • Android5.0 v7扩展包之RecyclerView
        Android5.0v7扩展包之RecyclerViewAndroid开发文章 androidRecyclerViewRecyclerView。RecylerView简介TheRecyclerViewwidgetisamoreadvancedandflexibleversionofListView.ThiswidgetisaContainerfordisplayinglargedatasetsthatcanbescrolledvery......
      • Android Studio相关问题
        下载去官网下载即可,最新版如果运行不了,可选择安装其他版本,我安装的就是4.0版本建立项目一般就是建立一个空项目如果使用过idea,那么建立项目就很简单。因为Android Studio和idea 界面都差不多,功能也类似步骤:File——New——New Project 会出现以下画面:然后选择Empty......
      • android ffmpeg 打开u3u8地址没有协议
         编译是需要--enable-openssl debug info: '--target-os=android--ln_s='cp-rf'--prefix=/Users/yzfhkms-m/pripro/D/library/FFmpeg-n4.0/libs/arm--arch=arm--enable-hwaccels--enable-shared--enable-static--enable-gpl--enable-runtime-cpudetect......
      • Android Studio系列教程五--Gradle命令详解与导入第三方包
        AndroidStudio+Gradle的组合用起来非常方便,很多第三方开源项目也早都迁移到了Studio,为此今天就来介绍下查看、编译并导入第三方开源项目的方法。Sublime+Terminal编译并查看源码首先来给大家介绍一种简便并且个人最喜欢的一种办法。很多时候我们在GitHub上看到一个不错的开......
      • 史上最详细的Android Studio系列教程四--Gradle基础
        什么是Gradle?Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。安装Gradle在AndroidStudio系列教程一--下载与安装中新建项目成功后会下载Gradle,貌似这个过程不翻也是可以下载,但是访问......
      • Android Studio系列教程二--基本设置与运行
        上面一篇博客,介绍了Studio的优点与1.0RC的安装与上手体验,没想到google的更新速度这么快,已经出了RC2版本,主要是修复一些bug。那么今天就带大家预览下Stduio的界面与基本功能。项目结构当我们新建一个项目的目录结构默认是这样的可以看到和Eclipse的目录结构有很大区别,Studio一个......