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