美文网首页
Richtext富文本使用

Richtext富文本使用

作者: on_i_on | 来源:发表于2020-01-17 15:48 被阅读0次

    [https://github.com/zzhoujay/RichText github地址]

    RichText只支持图片点击和链接点击,局部文字点击没有看到怎么使用。这里稍作补充:

    /**
     * 需要局部高亮加下划线的文字
     * @param string
     * @return
     */
    private SpannableString getRichText(String string) {
        SpannableString spannableString = new SpannableString(string);
        int start = 0;
        // 根据不同的情况决定开始高亮加下划线的位置
        if (mSelectTypePos == 0) {
            start = string.indexOf("6.") + 2;
        } else {
            start = string.indexOf("5.") + 2;
        }
        int end = string.length();
        //高亮
        spannableString.setSpan(clickSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //加下划线
        spannableString.setSpan(underlineSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//SPAN_INCLUSIVE_EXCLUSIVE
        return spannableString;
    }
    //高亮部分点击响应
    ClickableSpan clickSpan = new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            。。。
        }
    
        @Override
        public void updateDrawState(TextPaint ds) {
    
        }
    };
    //加下划线
    UnderlineSpan underlineSpan = new UnderlineSpan() {
        @Override
        public void updateDrawState(TextPaint ds) {
            ds.setColor(getResources().getColor(R.color.linkColor));
            ds.setUnderlineText(true);
        }
    };
    
    //使用
    textview.setText(getText("需要部分高亮架线划线的文字"));
    textview.setMovementMethod(LinkMovementMethod.getInstance());//不加这句不响应点击事件
    

    /-----------------------------------------------------------------------------------------------------/

    下面是RichText的使用介绍

    gradle中引用的方法
    compile 'com.zzhoujay.richtext:richtext:2.5.2'
    
    设置数据源类型
    // 设置为Html
    RichText.fromHtml(text).into(textView);
    // 设置为Markdown
    RichText.fromMarkdown(text).into(textView);
    
    资源释放
    // activity onDestory时
    RichText.clear(activity);
    //在应用退出时调用
    RichText.recycle();
    
    所有方法
    RichText
       .from(text) // 数据源
       .type(RichText.TYPE_MARKDOWN) // 数据格式,不设置默认是Html,使用fromMarkdown的默认是Markdown格式
       .autoFix(true) // 是否自动修复,默认true
       .autoPlay(true) // gif图片是否自动播放
       .showBorder(true) // 是否显示图片边框
       .borderColor(Color.RED) // 图片边框颜色
       .borderSize(10) // 边框尺寸
       .borderRadius(50) // 图片边框圆角弧度
       .scaleType(ImageHolder.ScaleType.FIT_CENTER) // 图片缩放方式
       .size(ImageHolder.MATCH_PARENT, ImageHolder.WRAP_CONTENT) // 图片占位区域的宽高
       .fix(imageFixCallback) // 设置自定义修复图片宽高
       .fixLink(linkFixCallback) // 设置链接自定义回调
       .noImage(true) // 不显示并且不加载图片
       .resetSize(false) // 默认false,是否忽略img标签中的宽高尺寸(只在img标签中存在宽高时才有效),true:忽略标签中的尺寸并触发SIZE_READY回调,false:使用img标签中的宽高尺寸,不触发SIZE_READY回调
       .clickable(true) // 是否可点击,默认只有设置了点击监听才可点击
       .imageClick(onImageClickListener) // 设置图片点击回调
       .imageLongClick(onImageLongClickListener) // 设置图片长按回调
       .urlClick(onURLClickListener) // 设置链接点击回调
       .urlLongClick(onUrlLongClickListener) // 设置链接长按回调
       .placeHolder(placeHolder) // 设置加载中显示的占位图
       .error(errorImage) // 设置加载失败的错误图
       .cache(Cache.ALL) // 缓存类型,默认为Cache.ALL(缓存图片和图片大小信息和文本样式信息)
       .imageGetter(yourImageGetter) // 设置图片加载器,默认为DefaultImageGetter,使用okhttp实现
       .bind(tag) // 绑定richText对象到某个object上,方便后面的清理
       .done(callback) // 解析完成回调
       .into(textView); // 设置目标TextView

    相关文章

      网友评论

          本文标题:Richtext富文本使用

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