如何从Android上的剪贴板粘贴时删除文本格式
问题描述:
现在我正在开发一个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东北。 :(
答
我解决了它。 我设置了长点击监听器弹出,剪切/复制/粘贴菜单之前赶上它显示了
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系统低于行动条剪切/复制/粘贴功能工作。 。
答
问题:
你正在做的,因为每次你打电话setText()
,再次afterTextChanged()
正在创造一个无限循环的事情被调用(因为你正在改变EditText
内的文本
解决方案:
假设EditText
为editTextToClearStyle
EditText editTextToClearStyle = (EditText)findViewById(R.id.youredittextname);
editTextToClearStyle.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
editTextToClearStyle.setTextAppearance(getApplicationContext(),R.style.normalText);
}
感谢您的答复,但是这并不工作:(我将此作为normalText风格#000000- 30sp
- @ color/Black
- 正常
–
2014-09-01 19:16:12
您现在面临的问题是什么? – 2014-09-02 02:46:51