2014-09-01 69 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

相关问题