java - 如何在 Android 上从剪贴板粘贴时删除文本格式

标签 java android android-edittext copy-paste

现在我正在开发一个 Android 应用程序,该应用程序需要允许用户剪切副本并将其粘贴到 editText 字段中。但是,当我从其他地方复制格式化字符串(即带下划线的字符串)并将其粘贴到 editText 字段时,它会将其显示为格式化版本。我该如何删除它?

我尝试通过添加 addTextChangedListener 来添加 textwatcher,在文本更改后我只需执行 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;
        }
    });

这工作得很好,直到我意识到我的手机上有两种类型的剪切/复制/粘贴。一种是当编辑文本为空并且我长按该字段时。这将弹出一个弹出菜单。另一种是当字段中有文本时,当我长按时,这会在操作栏下方弹出一个剪切/复制/粘贴栏。我上面的代码仅影响操作栏下方的栏。 :(

最佳答案

问题:

您正在做的事情是创建一个无限循环,因为每次您调用 setText() 时,都会再次调用 afterTextChanged() (因为您正在更改编辑文本

解决方案:

假设EditTexteditTextToClearStyle

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

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

关于java - 如何在 Android 上从剪贴板粘贴时删除文本格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25602198/

相关文章:

android - 检测 Android JNI 代码中的 native 内存泄漏

java - 如何计算Android中4个EditText的最小值?

android - 我应该如何使用改造来获取数组下的图像

android - 在某些手机上,文本不会出现在编辑文本中

java - 如何告诉 rmiregistry 在哪里寻找类(class)?

java - 无法在 eclipse 版本 : 3. 2.1 中查看堆栈跟踪控制台。

java - JTable 的 setSelectedRow() 在哪里?

java - 找不到扩展 CordovaActivity 的 Java 文件。当使用 "cordova build"

android - System.InvalidCastException : Specified cast is not valid on editText. AddTextChangedListener

java - 只要使用 EditText,就会出现连续消息