關於RichEdit的那些坑


  項目開發中用到了richedit,但是並沒有用到圖文的功能,只是說使用他的各種屬性,集成了一個自己的超文本編輯器.

  開發遇到了各種坑,在這里跟大家分享下:

  1: 跳轉編輯界面,無法獲取焦點.

    通過RichEdit.focusEditor()來獲取輸入框的焦點.

  2: 默認字體3號字體,之前未發現.

    通過RichEdit.setFontsize('size')來設置,size可以是1-7的數字,查看文檔在js中的setFontsize可以插入例如:large,small之類的標簽,我試着在java中修改傳入的值,但未起作用,目測暫時不能支持別的(當然可能是我自己漏了啥哈^_^);

  3: 跳轉輸入界面傳值

    最開始以為richedit是一個webview,傳值時使用load()來加載,但是使用后就獲取不到焦點,不起作用了,想了想也對,richedit加載的是本地的html文件,如果你加載了別的,還怎么執行那些方法?查看方法中找到了RichEdit.setHtml();使用后解決......坑啊.

  4:項目中因為是超文本編輯器,各種標簽的選中狀態需要改變,所以修改源碼.......學習了幾天的js(本人懵逼啊,,,,,).

    第一:沒有選中狀態,需要在java文件的類型數組中添加.  

    public enum Type {
    BOLD, ITALIC, SUBSCRIPT, SUPERSCRIPT, STRIKETHROUGH, UNDERLINE, H1, H2, H3, H4, H5, H6}

    第二: 需要在js文件中返回的類型里面加入自己設定的類型.

        RE.enabledEditingItems = function(e) {

          

              var items = [];
      if (document.queryCommandState('bold')) {
        items.push('bold');
            }

         window.location.href = "re-state://" + encodeURI(items.join(',')); 

        }

        

  

    第三:需要在回調方法中判斷是否有這些類型.

private void stateCheck(String text) {
String state = text.replaceFirst(STATE_SCHEME, "").toUpperCase(
Locale.ENGLISH);

List<Type> types = new ArrayList<Type>();
for (Type type : Type.values()) {
if (TextUtils.indexOf(state, type.name()) != -1) {
types.add(type);
}
}
if (mDecorationStateListener != null) {
mDecorationStateListener.onStateChangeListener(state, types);
}
}

    第四:如果你想要在切換焦點位置時,獲取當前字段的各種標簽,在activity中重寫下面的方法:

    

        editText.setOnDecorationChangeListener(new RichEditor.OnDecorationStateListener() {

            @Override
            public void onStateChangeListener(String text, List<Type> types) {

            

              String s = "";
              for (Type type : types) {
                  s = s + type.name() + ",";
                }

          }
      });

     

      總結:總之richedit還是比較不錯的,但是還是需要我們來完善的,希望以上內容能幫到各位.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM