當前位置:首頁 » 安卓系統 » 富文本編輯器android

富文本編輯器android

發布時間: 2022-09-22 19:30:22

A. 如何實現一個 Android 端的富文本編輯器

在 Android 上實現富文本編輯器的思路大致分為三種:

使用多種 Layout 布局,每一種布局對應一種 HTML 格式,比如圖片,比如順序列表等。具體的實現例子可以參考這個鏈接。 Medium 和
Evernote 的富文本編輯就是採用這種方式實現的。總體來說比較復雜。

WebView + javaScript 實現。現在 Web 端有很多成熟的 JavaScript 富文本編輯庫,比如 Squire ,你只需要做好
WebView 和 JavaScript 的交互就可以了(多寫回調函數)。理論上雖然是這么說,但是在實現過程你需要解決 WebView 的兼容性問題(
Android 4.4 及其以上版本和 4.4 以下版本的 WebView 內核不一樣),以及其他一些不可預見的問題(比如就遇到無法粘貼文字的問題)。

EditText + Span 。 Android 的 TextView 原生支持諸如粗體、刪除線、引用等 Span
,要實現簡單的富文本編輯需求,可操作性還是比較大的。綜合再三,選擇了這種方式來實現自己的需求。

既然決定使用 EditText + Span 的方式來實現,必然要對相關的 API 有所了解。

首先來了解一下 Span 。Span 是一個強大的概念,有興趣深入的同學推薦直接閱讀這篇譯文。

在這里主要使用兩種類型的 Span :

繼承自 CharacterStyle 的 Span ,比如 StyleSpan ,可以在字元級別上添加粗體,下劃線等。

繼承自 ParagraphStyle 的 Span ,比如 QuoteSpan ,可以為段落級別的文本添加引用。

接著需要一個可以將 Span 的效果設置進去的文本結構(即實現了 Spannable 介面), SpannableStringBuilder
是個不錯的選擇,同時 EditText 提供的 getEditableText() 方法也可以獲得。通常只需要 getEditableText()
就可以了,但是在面對一些細節部分,可以使用 SpannableStringBuilder 預先設置相應的 Span ,再替換到原來的文本中。

設置 Span 的方式也很簡單,需要調用 Spannable.setSpan(Object what, int start, int end, int
flags) 這個方法即可,方法中 4 個參數的解釋如下:

Object what ,傳入你使用的 Span 對象。

int start ,設置 Span 的開始位置。

int end ,設置 Span 的結束位置。

int flags ,代表設置 Span 的作用域。

在這里重點介紹一下 int flags 這個參數,它接受 4 種類型的參數,分別是:

Spanned.SPAN_INCLUSIVE_EXCLUSIVE ,表示你在設置 Span 的區域之前輸入文字,輸入的文字也會受到 Span
的影響。

Spanned.SPAN_INCLUSIVE_INCLUSIVE ,表示你在設置 Span 的區域前後輸入文字,輸入的文字都後受到 Span
的影響。

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE ,表示你在設置 Span 的區域中出輸入文字,輸入的文字才會受到 Span
的影響。

Spanned.SPAN_EXCLUSIVE_INCLUSIVE ,表示你在設置 Span 的區域之後輸入文字,輸入的文字也會受到 Span
的影響。

「受到影響」的意思就是,仍然會保持你設置的 Span 的樣式,比如選擇Spanned.SPAN_EXCLUSIVE_INCLUSIVE
設置了一段文字的粗體,那麼在這段文字後新輸入的文字,也會是粗體。在這里推薦使用Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
參數,畢竟其他幾種參數相對不是很好控制,而且會給使用的人帶來的疑惑。認為一個操作代表的行為應當是准確沒有歧義的。

好,到這里已經知道大致怎麼作出一個富文本編輯器組件的樣子了,無非是指定開始位置和結束位置,再設置相應的 Span
即可。至於設置的時候採取什麼樣的規則,你可以自己定製。但僅僅解決了編輯的問題,仍然存在導入的問題和導出的問題。

導入的問題十分簡單, Android SDK 中提供了 Html.fromHtml() 這個方法,可以很輕松地將 HTML 字元串轉換為所需的
Spanned 對象。但是需要注意的是, Html.fromHtml() 並不支持所有的 HTML 標簽,比如無序列表就不支持,因此你需要自己實現
Html.TagHandler 介面來處理自己所需的標簽,可以參考這個鏈接,實現了刪除線和簡單無序列表的支持。

面對粗體、斜體這樣字元級別的樣式, Html.fromHtml()
會自然而然的解析,該添加換行的地方就添加換行,並沒有什麼問題;但是面對引用、無序列表這樣段落級別的樣式,該方法會追加一個換行,也就是兩個換行操作,相當於多出一個空行。通常來說認為一個
對應兩個
,但是如果你有特別需求的話,也可以通過前面說的那樣,自己來解析,而不是用系統默認的方式。

之前介紹了如何導入,想必你也十分清楚,必然有一個對應的Html.toHtml() 方法!沒錯,但是遺憾的是,這個方法也不全支持所有 Span
,比如列表就不支持。不過沒有關系, Html.toHtml() 這個方法本身的源碼簡潔易懂,可以參考著實現。

在這里重點說明 Spannanle 的一個介面方法 nextSpanTransition(int start, int limit, Class
type) ,這個方法會在你指定的文本范圍內,返回下一個你指定的 Span 類型的開始位置,依照這個方法,就可以逐層掃描指定的 Span
,而不用同時考慮其他類型的 Span 的影響,十分有用。

最後盡管說了這么多,導入導出還是有一個比較關鍵的問題,即導入的內容和導出的內容要保持一致,在這點上目前我還比較難以實現,只能說盡量控制吧,必要的時候還需要使用一下正則來處理導入導出的文本。

B. 如何實現一個 Android 端的富文本編輯器

你好,
較常見的實現圖文混排的辦法

WebView + JavaScript;
EditText + Span;
scrollview + view;
WebView + JavaScript
webview實現富文本也就是html+css+js,不過這種的難點就是在手機客戶端中的編輯問題,畢竟是webview和android view的轉化問題。
EditText + Span
可以很好的實現簡單富文本的編輯,但是在圖文混排,以及各種主要自定義的組件面前就顯得捉襟見肘。
scrollview + view
優點是可以實現各種各樣的view,想什麼組件自定義就行,而且實現比較簡單,簡單幾句就可以實現文本插入編輯。
scrollview + view的實現過程
效果圖:

首先,先定義一個組件的介面;

一個組件的點擊介面,可根據組件選擇實現的方法;

然後定義兩個簡單的組件 RichEditText 和RichImageView;

實現一個簡單的圖片組件;

定義了兩個簡單的組件之後,接下來就是最後的組件管理器RichSrcollView,對組件的增刪其實也是最基本的addview和removeview,管理器實現了組件的點擊事件,鍵盤的回退刪除,組件的插入方法等待;

點擊按鈕的時候就新建一個圖片組件,而文本框組件可以點擊組件下面的空白條插入;

其他
在scrollview實現一些view的添加和刪除,以及組件間的拼接,就可以實現一個很簡單的可定製的富文本編輯器。

C. 如何實現一個 Android 端的富文本編輯器

jota文本編輯器和jota ,基本全漢化的,小巧精悍,我用它們寫txt和html很方便。jota 我有破解版的,能同時打開多個文件。尤其是這兩款是我見過的安卓上唯一帶強悍的正則表達式替換功能的文本編輯器。用此功能可以過濾html標識符,實現html轉txt。要的話上傳附件給你。計數器在文件→屬性裡面。

D. 如何實現一個 Android 端的富文本編輯器

可以去參考開源的Android富文本項目嘛,比如:RichEditor,地址:

https //github com/wasabeef/richeditor-android

當然,也可以參考我的Android開源項目:JNote,地址:

https //github com/Jhuster/JNote

採用markdown語法作為富文本標記。

E. 安卓X5內核 富文本編輯器不支持

需要引入第三方的框架支持才能用。
富文本可以為用戶提供更加多樣化的文本展示形式,但由於其使用了H5標簽的特殊性,一般都需要第三方框架的支持。這里推薦一款合適的第三方富文本框架,richeditor。
首先我們要使用該功能需要引入相關jar包,然後我們需要解決一個問題,那就是,在富文本編輯器的使用中,5.0以下的系統自帶的webview無法實現刪除圖片的功能。這個漏洞在5.0以後被谷歌公司進行了修復。但是問題來了,公司的軟體是要兼容到4.2系統的,總不能因為這個問題不讓用戶用4.x的手機吧,而且這批用戶還不少,所以需要解決這個問題。我們的思路是替換掉系統的webview,更換第三方自定義webview。這里有一個好的框架推薦就是騰訊的X5內核,內含騰訊重寫的Webview,版本到7.0。這里不重點講述X5內核的好處,我們看一下如何替換。我們看到,RichEditor中最關鍵的一個自定義類是一個叫做RichEditor的類。這是我們布局上輸入富文本區域的控制項。我們看到它的繼承類是WebView。這里咱們把代碼拷貝出來並且重寫該類,並將繼承類換成X5內核中的WebView,這樣我們就可以在這個類中進行其他的一些修改,比如新功能的添加之類的。

F. 如何實現一個 Android 端的富文本編輯器

RichEditor for Android 是 Android的一個超酷的所見即所得的富文本編輯器控制項。
它支持的功能有:Bold、Italic、Subscript、Superscript、Strikethrough、Underline、Justify Left、Justify Center、Justify Right、Heading 1、Heading 2、Heading 3、Heading 4、Heading 5、Heading 6、Undo、Redo、Indent、Outdent、Insert Image、Insert Link、Text Color、Text Background Color、Milestone、Blockquote
RichEditor 是一個繼承自 WebView 的自定義 view,枚舉類型 Type 定了它所支持的排版格式。
編輯器的核心功能由 js 實現,RichEditor 封裝了 js 的功能,為上層提供了 java 介面

G. 如何實現一個 Android 端的富文本編輯器

利用XML進行文本內容和格式描述,圖片音頻資源通過uri引入,XML解析就自己添加咯。

H. android 富文本編輯器+webview 顯示 高亮

UEditor編譯器支持代碼高亮顯示,設置方法如下:
1.頁面head引入UEditor類包文件shCore.js、shCoreDefault.css代碼
(註:引入文件路徑根據需求變更即可)
2.新增js代碼
刷新頁面,就可以看到頁面代碼高亮顯示。

熱點內容
谷能壓縮機 發布:2025-01-13 15:44:30 瀏覽:412
電腦電腦直連通訊ftp 發布:2025-01-13 15:38:03 瀏覽:717
nvm存儲 發布:2025-01-13 15:36:19 瀏覽:552
京東架構師緩存經驗 發布:2025-01-13 15:33:00 瀏覽:726
android圖片顏色 發布:2025-01-13 15:26:09 瀏覽:268
國家稅務總局電腦伺服器 發布:2025-01-13 15:10:24 瀏覽:596
金立老款機的開機密碼是多少 發布:2025-01-13 15:04:45 瀏覽:456
湖南網上辦稅初始密碼多少 發布:2025-01-13 15:02:49 瀏覽:417
怎麼使用筆記本連接伺服器 發布:2025-01-13 15:02:48 瀏覽:705
長城cs75plus選哪個配置 發布:2025-01-13 14:54:05 瀏覽:22