Android富文本编辑器

Android富文本编辑器Android富文本编辑器,一款支持撤销、加粗、斜体、下划线、有序无序列表、对齐、改文字大小、改文字颜色、插入图片、插入视频等功能,并且可设置cookie,自定义素材操作菜单的的编辑器。github地址:https://github.com/yeaper/RichEditor1.控件使用RichEditor是富文本编辑器,EditorOpMenuView是操作栏控件,两个需要配合使用,xm…

大家好,又见面了,我是你们的朋友全栈君。

Android富文本编辑器,一款支持撤销、加粗、斜体、下划线、有序无序列表、对齐、改文字大小、改文字颜色、插入图片、插入视频等功能,并且可设置cookie,自定义素材操作菜单的的编辑器。

github地址:https://github.com/yeaper/RichEditor

演示

1.控件使用

RichEditor是富文本编辑器,EditorOpMenuView是操作栏控件,两个需要配合使用,xml引用方式如下:

<com.yyp.editor.RichEditor android:id="@+id/editor" android:layout_width="match_parent" android:layout_height="wrap_content"/>

<com.yyp.editor.widget.EditorOpMenuView android:id="@+id/editor_op_menu_view" android:layout_width="match_parent" android:layout_height="wrap_content"/>

两个控件最后需要绑定

mEditorOpMenuView.setRichEditor(mEditor);

2.编辑器相关设置

//设置占位文字
mEditor.setPlaceholder("请填写文章正文内容(必填)");
//设置编辑器文字大小
mEditor.setEditorFontSize(16);
//设置编辑器内边距
mEditor.setPadding(10, 10, 10, 10);
//设置编辑器背景色
mEditor.setBackgroundColor(UIUtils.getResources().getColor(R.color._ffffff));
//禁止编辑 包括长按复制、双击选中、点击
mEditor.disableEdit();
//配置同一界面的焦点切换,可传多个输入框控件
mEditor.hideWhenViewFocused((editText1, editText2, editText3, ...);

3.编辑器操作

//撤销
mEditor.undo();
//反撤销
mEditor.redo();
//加粗
mEditor.setBold();
//斜体
mEditor.setItalic();
//删除线
mEditor.setStrikeThrough();
//下划线
mEditor.setUnderline();
//设置文字颜色 传int色值
mEditor.setTextColor(color);
//设置文字大小 支持1-7字号
mEditor.setFontSize(size);
//左对齐
mEditor.setAlignLeft();
//居中对齐
mEditor.setAlignCenter();
//右对齐
mEditor.setAlignRight();
//两端对齐
mEditor.setAlignFull();
//有序列表
mEditor.setNumbers();
//无序列表
mEditor.setBullets();
//清除所有格式
mEditor.removeFormat();

//插入图片
mEditor.insertImage("图片地址", "提示文字");
//插入视频
mEditor.insertVideoFrame("视频封面地址", videoId, "视频名字", size);
//插入文本
mEditor.insertHtml("文本内容");

4.监听接口使用

//编辑器焦点监听
mEditor.setOnEditorFocusListener(new OnEditorFocusListener() { 
   
    @Override
    public void onEditorFocus(boolean isFocus) { 
   
        mEditorOpMenuView.displayMaterialsMenuView(false); //编辑器重获焦点,素材菜单要隐藏
        mEditorOpMenuView.setVisibility(isFocus ? View.VISIBLE : View.GONE);
    }
});
//编辑器文本输入回调
mEditor.setOnTextChangeListener(new OnTextChangeListener() { 
   
    @Override
    public void onTextChange(String text) { 
   
        text.length();
    }
});
//监听素材菜单点击事件
mEditorOpMenuView.setOnMaterialsItemClickListener(new OnMaterialsItemClickListener() { 
   

    @Override
    public void onMaterialsItemClick(MaterialsMenuBean bean) { 
   
        switch (bean.getId()){ 
   
            case MATERIALS_IMAGE: //从素材图片库选择
                break;
            case MATERIALS_VIDEO: //从素材视频库选择
                break;
            case MATERIALS_TXT: //从素材文字库选择
                break;
            case LOCAL_IMAGE: //从本地图片库选择
                break;
            case LOCAL_VIDEO: //从本地视频库选择
                break;
        }
    }
});

5.遇到的问题与解决方案

问题: 编辑器展示的图片访问不了,需要传cookie验证

解决方案: 先前试过在WebViewClient的shouldInterceptRequest方法中,针对url设置cookie,但是cookie同步不及时,导致部分图片无法加载,后来考虑在加载图片前,先设置cookie,那么得出解决方案,先清除原来的cookie,然后为图片的ip地址设置新cookie,就可以访问了,这个方法在Webview.loadUrl()方法前调用即可。(注:android5.0以上记得打开cookie开关)

 //打开cookie
android.webkit.CookieManager cookieManager = android.webkit.CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
   
    cookieManager.setAcceptThirdPartyCookies(this, true);
}

private void addCookies(String url) { 
   
    CookieManager cookieManager = CookieManager.getInstance();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
   
        cookieManager.removeSessionCookies(null);
        PersistentCookieStore cookieStore = new PersistentCookieStore(UIUtils.getContext());
        for (Cookie cookie : cookieStore.getCookies()) { 
    //添加cookie
            cookieManager.setCookie(url, String.format("%s=%s", cookie.name(), cookie.value()));
        }
        cookieManager.flush();
    }
}

问题: 为了方便编辑,图片、视频之间需要保持间距

解决方案: css样式文件中,设置margin边距即可

/* 图片和视频:宽度占满,高度自适应,下边距3px */
IMAGE,img,video { 
   
    width: 100% !important;
    height: auto;
    margin: 0px 0px 3px 0px !important;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133488.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月8日 下午9:00
下一篇 2022年6月8日 下午9:00


相关推荐

  • 怎样用python开发安卓app_python开发app可以商用嘛

    怎样用python开发安卓app_python开发app可以商用嘛显然,时下最流行的信息学技术就是深度学习了。深度学习(DeepLearning,DL)或阶层学习(hierarchicallearning)是机器学习的技术和研究领域之一,通过建立具有阶层结构的人工神经网络(ArtifitialNeuralNetworks,ANNs),在计算系统中实现人工智能。由于阶层ANN能够对输入信息进行逐层提取和筛选,因此深度学习具有表征学习(representat…

    2022年8月12日
    6
  • 掌握这些常用Linux命令,一起提升工作效率

    万字长文分享Linux常用命令,一起提升工作效率。开始上班了,新一年的奋斗的之路启程了,要继续【奔赴山海,奔赴热爱】。

    2022年3月1日
    42
  • Centos查看系统版本「建议收藏」

    Centos查看系统版本「建议收藏」1.查看已经安装的CentOS版本信息CentOS的版本号信息一般存放在配置文件当中,在CentOS中,与其版本相关的配置文件中都有centos关键字,该文件一般存放在/etc/目录下,所以说我们可以直接在该文件夹下搜索相关的文件。其中存放其版本配置信息的文件为“centos-release”,翻译过来就是“CentOS的发行版”,所以说我们可以在这里查看CentOS相应的版本信息。upstream,上游的意思,centos是由RHEL衍生而来。ll/et…

    2022年6月24日
    99
  • 全网最全性能优化总结!!(冰河吐血整理,建议收藏)「建议收藏」

    全网最全性能优化总结!!(冰河吐血整理,建议收藏)「建议收藏」性能优化一般包含:数据聚合优化、资源冲突优化、算法优化、JVM优化、复用优化、计算优化和快速优化,冰河吐血整理,建议大家收藏!!

    2022年8月22日
    8
  • 绘制超漂亮的基因差异表达火山图

    绘制超漂亮的基因差异表达火山图基因表达 漂亮火山图 rm list ls getwd ctrl shift h 切换工作目录 library EnhancedVolc library DESeq2 library airway library magrittr data airway lt gt 复合赋值操作符 功能与 gt 基本是一样的 但多了一项额外的操作 就

    2026年3月26日
    2
  • Xlsx结合File-Saver实现前端页面表格导出Excel为文件

    Xlsx结合File-Saver实现前端页面表格导出Excel为文件系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例

    2022年6月28日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号