android - 如何禁用 EditText Android 中的退格行为?

标签 android android-edittext long-press

例如,我在 EditText 中有以下字符串:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat

正常行为是,当用户在虚拟键盘上长按退格键时,系统会直接删除每个单词,例如:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat

成为

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat

我可以防止此类行为在我的应用中发生吗?

我尝试观察 onKeyDownonKeyUponKeyLongPressonTextChangedafterTextChangedbeforeTextChanged,但没有找到我可以用来防止此类行为的东西。

最佳答案

覆盖它只会让用户感到困惑,这是一个坏主意。但这是键盘在 Android 中的工作方式 - 它们决定显示哪些按钮以及它们响应用户输入的行为。没有办法覆盖它。如果您不喜欢这种行为,我建议您找到一个按您想要的方式工作的键盘。

重写 onKeyXXX 将不起作用,因为它们用于物理按钮,不会由屏幕键盘生成。

如果您必须覆盖它,您需要实现一个 TextWatcher 并在 afterTextChanged 中编辑序列。您需要查找新文本比旧文本小 1 个以上字符的情况,如果是这样,则将文本替换为旧文本减 1 个字符。请注意,这可能会破坏任何启用了自动更正功能的键盘或任何使用完成文本的键盘,具体取决于键盘和 Android 序列事件的方式。

换句话说 - 不要这样做,它带来的麻烦远大于它的值(value),并且对大多数用户来说会崩溃。

关于android - 如何禁用 EditText Android 中的退格行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24513515/

相关文章:

android - 发布 Android Kotlin 库以及源代码

Android ViewModel 附加参数

android - 如何通过 FragmentPagerAdapter 将变量传递给 fragment ?

java - OnRetainCustomConfigurationInstance 之后所有编辑文本中的重复文本

android - 添加 EDITTEXT 作为子菜单选项 android

c# - WPF,ScrollViewer 在长按之前消耗触摸

testing - UI5 - OPA5 测试 - 模拟 "right click"或 "long press"或 "context menu"

android,在列表项中显示箭头图标

android - 需要帮助在线性布局中将 EditText 居中

ios - 复制 iOS 的 dashboard 应用程序按钮,一个带有长按手势识别器的按钮