重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
基于原生EditText+span实现的Android富文本编辑器
创新互联是一家以网络技术公司,为中小企业提供网站维护、做网站、网站建设、网站备案、服务器租用、申请域名、软件开发、小程序定制开发等企业互联网相关业务,是一家有着丰富的互联网运营推广经验的科技公司,有着多年的网站建站经验,致力于帮助中小企业在互联网让打出自已的品牌和口碑,让企业在互联网上打开一个面向全国乃至全球的业务窗口:建站服务电话:028-86922220
github地址:
该组件是基于原生EditText+span的方式实现的,旨在提供一个功能齐全且使用方便的Android富文本编辑器。主要支持了加粗斜体等行内样式、标题引用等段内样式以及插入图片视频甚至自定义View等。
Step 1. Add the JitPack repository in your root build.gradle at the end of repositories:
Step 2. Add the dependency in your app build.gradle:
说明:各个样式按钮的layout由调用方自行完成
说明:其中ivBold为加粗ImageView,由调用方在layout中定义;R.mipmap.icon_bold_normal和R.mipmap.icon_bold_light是加粗按钮正常状态和点亮状态图片的资源id。
说明:插入自定义布局最终也是通过bitmap以ImageSpan的形式插入到编辑器中的。
再次附上github地址:
欢迎star、fork、提issue~
UEditor编译器支持代码高亮显示,设置方法如下:
1.页面head引入UEditor类包文件shCore.js、shCoreDefault.css代码
(注:引入文件路径根据需求变更即可)
2.新增js代码
刷新页面,就可以看到页面代码高亮显示。
你还是照普通文本取过来,然后用textView.setText(Html.fromHtml(str));
这样看看,如果还不行试试用WebView展示;
或者用ImageView显示图片,道理一样。源码网上有
使用TextView结合android.text.Spanned来实现显示富文本和图片。
最近正在调研Android app 如何实现富文本编辑器,通过在网上查找相关方面的资料,得知Android 端实现富文本编辑器主要有以下几种方式:
如何实现一个 Android 端的富文本编辑器组件?
译 — Spans,一个强大的概念
放弃WebView,使用Crosswalk做富文本编辑器
在TextView类中预定义了一些类似HTML的标签,通过这些标签,可以使TextView控件显示不同的颜色、大小、字体的文字。
font:设置颜色和字体
big:设置大号字
small:设置小号字
i:斜体
b:粗体
tt:等宽字体(Monospace)
br:换行(行与行之间没有空行)
p:换行(行与行之间的空行)
a:链接地址
img:插入图像
这些标签虽然和HTML的标签类似,但并不具备HTML标签的全部功能。如font标签只支持color和face两个属性。
在使用这些标签时不能将带这些标签的字符串直接赋值到TextView上,而需要使用Html.frmHtml方法将带标签的字符串转换成CharSequence对象,再赋值给TextView。
如果想在显示的文本中将URL、E-mail、电话等特殊内容高亮显示,并在单击时触发相应的动作(如单击电话会直接在拨号界面显示电话号码),可以设置TextView标签的android:autoLink属性,该属性可设置的属性值如下:
none:不匹配任何链接(默认) web:匹配Web网址 email:匹配E-mail地址
phone:匹配电话号码 map:匹配映射地址 all:匹配所有的链接
示例:
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtFirst=(TextView)findViewById(R.id.txtFirst);
String html="font color='red'样式一/font br";
html+="font color='#0000FF' big i 样式二 /i /big font";
html+="font color='@"+android.R.color.white+"' tt b big u 样式三 /u /big /b /tt /font br";
html+="big a href=''我的博客: /a /big";
CharSequence charSequence=Html.fromHtml(html);
txtFirst.setText(charSequence);
//该语句在设置后必加,不然没有任何效果
txtFirst.setMovementMethod(LinkMovementMethod.getInstance());
}
}
如图:
在项目中有时候会遇到富文本的图文混排
先放demo地址
HtmlResolve
效果图:
通过调用setInfo方法对html进行解析并将解析到的图文信息显示到textview上
在handler中获取富文本中的图片地址,如果富文本中为多图,会多次进入该方法,可定义一个list来接收图片地址,实现预览图的功能。