如何解决如何让用户移动光标但不编辑Android Kotlin中的editText
我在做计算器。众所周知,每个计算器都使用由开发人员自己开发的键盘。我正在使用editText根据用户单击的按钮来输出。这不是问题。问题是我希望用户四处移动光标,选择输入文本的某些部分,但不使用android键盘对其进行编辑。我使用了focusable和cursorenabled方法,但没有任何帮助。我希望你们中有人可以帮助我。我正在用Kotlin。谢谢。
解决方法
您可以使用EditText
来设置键盘是否显示setShowSoftInputOnFocus(Boolean)
,如下所示:
editText.showSoftInputOnFocus = false
这样,Android键盘将不会显示,并且用户仍然可以左右移动光标并选择文本。文档here
注意:该方法仅适用于API 21及更高版本(到2020年10月,超过94%的活动设备)。
,您想拥有所有常用的选择和编辑内容,但是您不希望用户键入内容时内容真正改变吗?
您可以将InputFilter
添加到EditText
,并覆盖filter
方法:
当缓冲区要用
dstart … dend
的{{1}}范围内的新文本替换dest
的范围start … end
时,调用此方法。 返回您想要放置在其中的CharSequence ,如果合适,包括一个空字符串,或者为null以接受原始替换。
链接中还有更多详细信息,但是基本上您可以返回source
中的dstart...dend
,即要替换的原始部分,因此内容没有实际更改。像这样
dest
编辑:设置editText.filters += InputFilter { _,_,dest,dstart,dend -> dest.subSequence(dstart,dend) }
可能很有用,但这实际上只是意味着“在焦点对准视图时不显示软(屏幕)键盘”。您仍然可以通过以下几种方式编辑文本:
- 在硬件键盘上键入(某些设备装有它们,您可以通过在计算机键盘上键入在模拟器中进行测试)
- 通过点击光标粘贴一些东西
- 将
showSoftInputOnFocus
保持焦点,离开应用程序,然后再回来-软键盘可能会弹出
,依此类推。加上辅助功能服务可能会覆盖一切,即使您说“我不想显示键盘”,也允许用户显示他们选择的输入内容
(据我所知)可靠地阻止用户更改EditText
内容的唯一方法是使用EditText
来阻止所有更改。您也可以将InputFilter
设置为false,以尝试避免出现键盘-但就像我说的那样,在某些情况下仍会出现键盘。 showSoftInputOnFocus
将使其停止生效
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。