2014-09-01 202 views
1

現在我正在開發一個Android應用程序,該應用程序要求允許用戶剪切複製並粘貼到editText字段。但是當我從其他地方複製格式化的字符串(即帶下劃線的字符串)並將其粘貼到editText字段時,它會將其顯示爲格式化版本。我如何刪除它?如何從Android上的剪貼板粘貼時刪除文本格式

我試圖添加一個textwatcher加入addTextChangedListener,並在後文本更改我只是做edittext.setText(s.toString()+"")但這會創建一個無限循環。 :(

請幫助!在此先感謝。

編輯---- 我已經通過設置setCustomSelectionActionModeCallback

editDestination_.setCustomSelectionActionModeCallback(new Callback() { 
     @Override 
     public boolean onPrepareActionMode(ActionMode mode, Menu menu) {return true;} 
     @Override 
     public void onDestroyActionMode(ActionMode mode) {} 
     @Override 
     public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
      menu.removeItem(android.R.id.paste); 
      menu.removeItem(android.R.id.selectAll); 
      menu.add(0, CUSTOM_PASTE, 0, "Paste").setIcon(R.drawable.paste_ic); 
       return true; 
     } 
     @Override 
     public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
      switch (item.getItemId()) { 
       case CUSTOM_PASTE: 
         edittext.setText(readFromClipboard(aContext_)); 
        // Finish and close the ActionMode 
        mode.finish(); 
        return true; 
       default: 
        break; 
      } 
      return false; 
     } 
    }); 

這是相當不錯的了一定的進展,直到我意識到有兩種類型剪切/複製/粘貼到我的手機上,一個是當編輯文本爲空時,我長時間點擊該字段,這將彈出一個菜單;另一個是當字段中有文本,當我長時間點擊,這會在我的動作欄下方顯示一個剪切/複製/粘貼欄。我的上面的代碼隻影響欄下的動作欄o東北。 :(

回答

0

我解決了它。 我設置了長點擊監聽器彈出,剪切/複製/粘貼菜單之前趕上它顯示了

CharSequence actions[] = new CharSequence[] {"paste"}; 
       AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       builder.setCancelable(true); 
       builder.setItems(actions, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         edittext.setText(readFromClipboard(aContext_)); 
        } 
       }); 
       builder.show(); 

這時如果有串已經出現在編輯文本,我返回false允許正常android系統低於行動條剪切/複製/粘貼功能工作。 。

0

問題:

你正在做的,因爲每次你打電話setText(),再次afterTextChanged()正在創造一個無限循環的事情被調用(因爲你正在改變EditText內的文本

解決方案:

假設EditTexteditTextToClearStyle

EditText editTextToClearStyle = (EditText)findViewById(R.id.youredittextname); 

editTextToClearStyle.addTextChangedListener(new TextWatcher(){ 
     public void afterTextChanged(Editable s) { 
      editTextToClearStyle.setTextAppearance(getApplicationContext(),R.style.normalText); 
     } 
+0

感謝您的答覆,但是這並不工作:(我將此作爲normalText風格<顏色名稱=「黑」>#000000 <樣式名稱=「normalText」父=「@機器人: style/TextAppearance.Holo.Widget.EditText「> 30sp @ color/Black 正常 2014-09-01 19:16:12

+0

您現在面臨的問題是什麼? – 2014-09-02 02:46:51

相關問題