cef在android中使用_关于富文本在Android中的应用以及遇到的坑
富文本可以為用戶提供更加多樣化的文本展示形式,但由于其使用了H5標(biāo)簽的特殊性,一般都需要第三方框架的支持。這里推薦一款合適的第三方富文本框架,richeditor。
首先我們要使用該功能需要引入相關(guān)jar包,引入方法如下
compile 'jp.wasabeef:richeditor-android:1.2.0'
然后我們需要解決一個問題,那就是,在富文本編輯器的使用中,5.0以下的系統(tǒng)自帶的webview無法實現(xiàn)刪除圖片的功能。這個漏洞在5.0以后被谷歌公司進行了修復(fù)。但是問題來了,公司的軟件是要兼容到4.2系統(tǒng)的,總不能因為這個問題不讓用戶用4.x的手機吧,而且這批用戶還不少,所以需要解決這個問題。我們的思路是替換掉系統(tǒng)的webview,更換第三方自定義webview。這里有一個好的框架推薦就是騰訊的X5內(nèi)核,內(nèi)含騰訊重寫的Webview,版本到7.0。這里不重點講述X5內(nèi)核的好處,我們看一下如何替換。我們看到,RichEditor中最關(guān)鍵的一個自定義類是一個叫做RichEditor的類。這是我們布局上輸入富文本區(qū)域的控件。我們看到它的繼承類是WebView。這里咱們把代碼拷貝出來并且重寫該類,并將繼承類換成X5內(nèi)核中的WebView,如下樣式:
public class XRichEditor extends com.tencent.smtt.sdk.WebView
這樣我們就可以在這個類中進行其他的一些修改,比如新功能的添加之類的,下面舉兩個實用的小例子
例子1:
這個富文本沒有添加分割線的方法,我們?yōu)樗右粋€。在重寫的XRichEditor中,就是集成了X5內(nèi)核的富文本中,我們寫入如下代碼
public void setSplitt() {
exec("javascript:RE.insertHTML('
');");
}
這樣我們就添加了一個加入分割線的方法。其實細心的朋友已經(jīng)發(fā)現(xiàn)insertHTML就是在光標(biāo)處插入html代碼的方法,方便我們在光標(biāo)的停留位置插入代碼。
例子2:
我們還可以讓網(wǎng)頁的內(nèi)容響應(yīng)我們的點擊事件
public void insertImg(String url, String alt){
String html = "
";
exec("javascript:RE.insertHTML('"+html+"');");
Log.i("img",html);
}
這樣,我們就可以讓我們的圖片響應(yīng)通過WebView注入的接口,從而調(diào)用我們原生的方法。
另外,我們講一下富文本編輯器的原理。
富文本編輯器其實就是一個加載在我們WebVIew上的一個網(wǎng)頁,網(wǎng)頁的源碼是這樣寫的
可以看到,div被我們標(biāo)記成了內(nèi)容可以編輯的狀態(tài)。
緊接著我們使用document.execCommand的相關(guān)方法在js文件中對HTML進行相關(guān)的操作。改套方法可以允許運行命令來操縱可編輯區(qū)域的內(nèi)容。大多數(shù)命令影響文檔的選擇(粗體,斜體等),而其他命令插入新元素(添加鏈接)或影響整行(縮進)。當(dāng)使用contentEditable時,調(diào)用 execCommand() 將影響當(dāng)前活動的可編輯元素。
這樣我們就可以愉快的使用富文本編輯器了。更多功能還要讀者自己去探索。
By WaterWood
總結(jié)
以上是生活随笔為你收集整理的cef在android中使用_关于富文本在Android中的应用以及遇到的坑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 输入框查询_Element
- 下一篇: python爬取京东评论_Python如