基于原生EditText+span實(shí)現(xiàn)的Android富文本編輯器

專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)東遼免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
github地址:
該組件是基于原生EditText+span的方式實(shí)現(xiàn)的,旨在提供一個(gè)功能齊全且使用方便的Android富文本編輯器。主要支持了加粗斜體等行內(nèi)樣式、標(biāo)題引用等段內(nèi)樣式以及插入圖片視頻甚至自定義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:
說明:各個(gè)樣式按鈕的layout由調(diào)用方自行完成
說明:其中ivBold為加粗ImageView,由調(diào)用方在layout中定義;R.mipmap.icon_bold_normal和R.mipmap.icon_bold_light是加粗按鈕正常狀態(tài)和點(diǎn)亮狀態(tài)圖片的資源id。
說明:插入自定義布局最終也是通過bitmap以ImageSpan的形式插入到編輯器中的。
再次附上github地址:
歡迎star、fork、提issue~
較常見的實(shí)現(xiàn)圖文混排的辦法
WebView + JavaScript;
EditText + Span;
scrollview + view;
WebView +?JavaScript
webview實(shí)現(xiàn)富文本也就是html+css+js,不過這種的難點(diǎn)就是在手機(jī)客戶端中的編輯問題,畢竟是webview和android view的轉(zhuǎn)化問題。
EditText + Span
可以很好的實(shí)現(xiàn)簡單富文本的編輯,但是在圖文混排,以及各種主要自定義的組件面前就顯得捉襟見肘。
scrollview + view
優(yōu)點(diǎn)是可以實(shí)現(xiàn)各種各樣的view,想什么組件自定義就行,而且實(shí)現(xiàn)比較簡單,簡單幾句就可以實(shí)現(xiàn)文本插入編輯。
scrollview + view的實(shí)現(xiàn)過程
效果圖:
首先,先定義一個(gè)組件的接口;
一個(gè)組件的點(diǎn)擊接口,可根據(jù)組件選擇實(shí)現(xiàn)的方法;
然后定義兩個(gè)簡單的組件 RichEditText 和RichImageView;
實(shí)現(xiàn)一個(gè)簡單的圖片組件;
定義了兩個(gè)簡單的組件之后,接下來就是最后的組件管理器RichSrcollView,對(duì)組件的增刪其實(shí)也是最基本的addview和removeview,管理器實(shí)現(xiàn)了組件的點(diǎn)擊事件,鍵盤的回退刪除,組件的插入方法等待;
點(diǎn)擊按鈕的時(shí)候就新建一個(gè)圖片組件,而文本框組件可以點(diǎn)擊組件下面的空白條插入;
其他
在scrollview實(shí)現(xiàn)一些view的添加和刪除,以及組件間的拼接,就可以實(shí)現(xiàn)一個(gè)很簡單的可定制的富文本編輯器。
你還是照普通文本取過來,然后用textView.setText(Html.fromHtml(str));
這樣看看,如果還不行試試用WebView展示;
或者用ImageView顯示圖片,道理一樣。源碼網(wǎng)上有
使用TextView結(jié)合android.text.Spanned來實(shí)現(xiàn)顯示富文本和圖片。
Slate 是一個(gè)完全可定制的富文本編輯框架。通過 Slate,你可以構(gòu)建出類似 Medium、Dropbox Paper 或者 Canvas 這樣使用直觀、富交互、體驗(yàn)也已成為 Web 應(yīng)用標(biāo)桿的編輯器。Slate 本身并不是一個(gè)編輯器,而是一套在 React 和 Immutable 的基礎(chǔ)上,用于操作富文本數(shù)據(jù)的框架。基于 Slate 實(shí)現(xiàn)一個(gè)富文本編輯器,相當(dāng)于是使用 React(視圖層)+ Immutable(數(shù)據(jù)層)開發(fā)一個(gè)普通 Web 應(yīng)用,Slate相當(dāng)于Controller。
Github:
文檔:
在線示例:
使用npm包管理
Slate 開放了一套用于構(gòu)建編輯器的模塊。其中,最重要的是 Editor 組件:
啟動(dòng)的時(shí)候我第一次失敗了,然后重新啟動(dòng)下就行了,然后打開瀏覽器localhost:8080
通過簡單的語法實(shí)現(xiàn)Markdown的編寫
你可以從別的網(wǎng)站直接粘貼帶有樣式的文本
寫過html標(biāo)簽的都知道
類似textarea/textarea
可以在應(yīng)用某些更改后保存新版本,然后隨時(shí)回滾到以前的版本
以下是開發(fā)者的一些說明(文檔有中文版):
類似加粗和斜體的結(jié)構(gòu)可以開箱即用,但評(píng)論、嵌入內(nèi)容以及更多的定制性需求呢?
用戶的編寫體驗(yàn)可能不錯(cuò),但在執(zhí)行編程式變更時(shí)卻不必要地復(fù)雜,而這對(duì)于構(gòu)建高級(jí)的編輯行為至關(guān)重要。
這是一個(gè)非常常見的使用場景,但要實(shí)現(xiàn)將文檔轉(zhuǎn)換為 HTML 或 Markdown 的簡單功能都需要編寫大量的模板代碼。
各種編輯器在重新發(fā)明視圖層的輪子,而非使用 React 這樣已有的技術(shù)方案。你必須學(xué)習(xí)一套帶著自有限制和陷阱的新系統(tǒng)。
編輯器內(nèi)部的數(shù)據(jù)結(jié)構(gòu)使其無法用于實(shí)時(shí)、協(xié)作的編輯場景中,除非重寫編輯器。
許多編輯器沒有對(duì)外開放本應(yīng)為開發(fā)者所復(fù)用的內(nèi)部工具,以至于不得不重新發(fā)明輪子。
不少編輯器是圍繞簡單的【扁平】文檔結(jié)構(gòu)設(shè)計(jì)的,這使得表格、嵌入內(nèi)容和字幕等內(nèi)容難以理解,有時(shí)甚至無法實(shí)現(xiàn)。
Slate是一個(gè)可以高度定制化博眾家之所長的富文本編輯器框架,其強(qiáng)大之處遠(yuǎn)不是本文所展現(xiàn)的這一點(diǎn),你可以使用它來創(chuàng)建復(fù)雜且優(yōu)雅的富文本編輯器,相對(duì)其他很多編輯器本身來說非常的靈活,文檔也非常的詳細(xì),目前也正在不斷地迭代當(dāng)中,對(duì)富文本編輯器定制化需求比較高的可以嘗試,希望能對(duì)你有所幫助!
最近正在調(diào)研Android app 如何實(shí)現(xiàn)富文本編輯器,通過在網(wǎng)上查找相關(guān)方面的資料,得知Android 端實(shí)現(xiàn)富文本編輯器主要有以下幾種方式:
如何實(shí)現(xiàn)一個(gè) Android 端的富文本編輯器組件?
譯 — Spans,一個(gè)強(qiáng)大的概念
放棄WebView,使用Crosswalk做富文本編輯器
UEditor編譯器支持代碼高亮顯示,設(shè)置方法如下:
1.頁面head引入U(xiǎn)Editor類包文件shCore.js、shCoreDefault.css代碼
(注:引入文件路徑根據(jù)需求變更即可)
2.新增js代碼
刷新頁面,就可以看到頁面代碼高亮顯示。
本文標(biāo)題:android富文本框架,android 富文本編輯
分享鏈接:http://chinadenli.net/article25/dsipgji.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、ChatGPT、移動(dòng)網(wǎng)站建設(shè)、、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)