微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让用户移动光标但不编辑Android Kotlin中的editText

如何解决如何让用户移动光标但不编辑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 举报,一经查实,本站将立刻删除。