美文网首页
Android开发 SpannableString的使用

Android开发 SpannableString的使用

作者: Hello李昊男 | 来源:发表于2019-12-21 18:41 被阅读0次

在Android 开发中经常遇到这样的问题:有一段文本,需要给部分文字设置不同的样式,而此时在用TextView就有点懵圈了。TextView虽然也可以解决,但是布局可能会非常复杂,也不利于后期的维护,这时候SpannableString就出现了,SpannableString俗称:富文本,而它就可以很好的解决这个问题,使用还非常简单,可以为个别字符设置链接,颜色,大小 ,点击事件 等。

在一段文字中对部分字符实现点击 先来看看效果:

案例1.png

在Xml中只需要使用TextView:

 <TextView
        android:id="@+id/tv"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

在Activity中创建SpannableString对象使用( ClickableSpan ) :

//创建SpannableString 对象,添加字符
SpannableString spannableString = new SpannableString("你叫什么名字?");
  //设置点击事件
        ClickableSpan clickableSpan = new ClickableSpan() {
            @Override
            public void onClick(@NonNull View view) {
                //点击后要执行的任务
                Toast.makeText(TextActivity.this, "我叫小明", Toast.LENGTH_SHORT).show();
            }
        };
         //设置spannableString样式
        //start :表示设置链接的起始位置
        //end  : 表示设置连接的结束位置
        //flags : 表示开始和结束下标是否包含某字符

        /** Spanned.SPAN_EXCLUSIVE_EXCLUSIVE    不包括开始,也不包括结束
         *  Spanned.SPAN_EXCLUSIVE_INCLUSIVE    不包括开始,但包括结束
         *  Spanned.SPAN_INCLUSIVE_INCLUSIVE    即包括开始,也包括结束
         *  Spanned.SPAN_INCLUSIVE_EXCLUSIVE    包括开始,不包括结束
         */
        spannableString.setSpan(clickableSpan, 4, 7, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        //激活点击事件
        mTv.setMovementMethod(LinkMovementMethod.getInstance());
        //加入到TextView中
        mTv.setText(spannableString);

还可以对文字添加链接 (URLSpan ) :

      SpannableString spannableString = new SpannableString("我想要打开浏览器");
      //设置链接地址
      URLSpan urlSpan = new URLSpan("https://www.baidu.com");
      spannableString.setSpan(urlSpan, 5, 8, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        //激活链接
      mTv.setMovementMethod(LinkMovementMethod.getInstance());
        //加入到TextView中
      mTv.setText(spannableString);

最后找到几个解释比较全面的网址,大家可以看一下
https://blog.csdn.net/zhaizu/article/details/51038113
https://github.com/Gennki/QRichText
https://www.jianshu.com/p/fd507f562676

相关文章

网友评论

      本文标题:Android开发 SpannableString的使用

      本文链接:https://www.haomeiwen.com/subject/pejgnctx.html