• Android使用Spannable对文字进行设置


    在Android中TextView和EditText是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置。

    废话少说,直接上代码:

    package com.qzhousoft.SpannableDemo.ui;
    
    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.text.style.UnderlineSpan;
    import android.widget.TextView;
    
    /**
    * <Spannable使用示例> 
    * @author 王乾州
    */
    public class main extends Activity
    {
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    TextView spannableTextView = (TextView)this.findViewById(R.id.tv);
    
    /**
    * 创建一个 SpannableString对象
    */
    SpannableString sp = new SpannableString(“谷歌超链接、高亮显示、高亮1、高亮2、斜体、下划线.”);
    
    /**
    * 设置超链接
    */
    sp.setSpan(new URLSpan(“http://www.google.com”), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    
    /**
    * 设置高亮样式一
    */
    sp.setSpan(new BackgroundColorSpan(Color.RED), 11, 14, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    
    /**
    * 设置高亮样式二
    */
    sp.setSpan(new ForegroundColorSpan(Color.YELLOW), 15, 18, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
    
    /**
    * 设置斜体
    */
    sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 19, 21, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
    
    /**
    * 设置下划线
    */
    sp.setSpan(new UnderlineSpan(), 22, 25, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    
    /**
    * SpannableString对象设置给TextView
    */
    spannableTextView.setText(sp);
    
    /**
    * 设置TextView中的超链接可点击
    */
    spannableTextView.setMovementMethod(LinkMovementMethod.getInstance());
    }
    }

    注意点:

    * 当我们文字中有了超链接时,一般我们必须有网络权限,但是在这里大家不用添加网络权限也可以访问超链接哦。。。

    * spannableTextView.setMovementMethod(LinkMovementMethod.getInstance());这句很重要,如果没有这句,超链接是不可点击的。

    如果我们文字中包含html标签那我们该如何展示哪,有一个很好的静态方法:

    Html.fromHtml()

    myTextView.setText(Html.fromHtml(“<font color=\”#330099\”>测试…</font>”));

    myTextView.setMovementMethod(LinkMovementMethod.getInstance()); // 如果标签里有链接要加上这句,否则链接无效撒。。。

  • 相关阅读:
    打包spring项目遇到的坑 Unable to locate Spring NamespaceHandler for XML schema ……shcema/context 产生的原因及解决方法
    Mybatis 从入门到精通一:mybatis的入门
    IO流系列一:输入输出流的转换
    本地模拟 gitlab ci 的 demo 项目
    docker 容器中部署 Go 服务时,请求 https 文件时抛错
    微信支付『支付失败,如果已扣款,资金在0-3个工作日原路返回』踩坑案例及解决方案
    PHP 安装 扩展时 抛出 /usr/local/Cellar/php@7.1/7.1.25/pecl 异常解决
    SpringBoot2 引入 Aop
    Mac 下 IDEA 中 SpringBoot 如何利用 DevTool 开启热部署
    MySql数据库中敏感字段加密处理方案
  • 原文地址:https://www.cnblogs.com/xuewater/p/2731350.html
Copyright © 2020-2023  润新知