如何让用户在android kotlin中移动光标而不编辑编辑文本
我在做一个计算器。众所周知,每个计算器都使用由开发人员自己开发的键盘。我使用editText根据用户单击的按钮进行输出。这不是问题。问题是我希望用户移动光标,选择输入的文本的某些部分,但不要使用android键盘进行编辑。我使用了可聚焦和可浏览的方法,但没有任何帮助。我希望你们中有人能帮助我。我在用科特林。谢谢。您可以使用如何让用户在android kotlin中移动光标而不编辑编辑文本,android,kotlin,android-edittext,cursor,Android,Kotlin,Android Edittext,Cursor,我在做一个计算器。众所周知,每个计算器都使用由开发人员自己开发的键盘。我使用editText根据用户单击的按钮进行输出。这不是问题。问题是我希望用户移动光标,选择输入的文本的某些部分,但不要使用android键盘进行编辑。我使用了可聚焦和可浏览的方法,但没有任何帮助。我希望你们中有人能帮助我。我在用科特林。谢谢。您可以使用设置ShowSoftInputInfo(布尔值)设置键盘是否显示编辑文本,如下所示: editText.showsoftwindputonfocus=false 这样,and
设置ShowSoftInputInfo(布尔值)
设置键盘是否显示编辑文本,如下所示:
editText.showsoftwindputonfocus=false
这样,android键盘将不会显示,用户仍然可以移动光标并选择文本。文件
注意:此方法仅适用于API 21及以上版本(截至2020年10月,超过94%的活动设备)。您希望所有常用的选择和编辑内容都可用,但如果用户键入内容,您不希望内容发生实际更改
您可以向编辑文本
中添加,并覆盖过滤器
方法:
当缓冲区要用源
的范围开始…结束
中的新文本替换dest
的范围dstart…dend
时,调用此方法返回您希望放在那里的字符序列,如果合适,包括一个空字符串,或者返回null以接受原始替换
链接中还有一些详细信息,但基本上您可以返回dest
的dstart…dend
,即原本要替换的部分,因此内容没有实际更改。像这样
editText.filters += InputFilter { _, _, _, dest, dstart, dend -> dest.subSequence(dstart, dend) }
编辑:设置showsoftwoinputonfocus
可能很有用,但它的字面意思是“当视图聚焦时,不要显示软(屏幕上)键盘”。您仍然可以通过以下几种方式编辑文本:
- 在硬件键盘上键入(某些设备有硬件键盘,您可以通过在计算机键盘上键入在模拟器中进行测试)
- 通过点击光标粘贴内容
- 保持
EditText
的焦点,离开应用程序,然后返回-软键盘可能会弹出
等等。此外,辅助功能服务可能会覆盖某些内容,并允许用户显示其输入选择,即使您说“我不希望键盘显示”
据我所知,可靠地阻止用户更改EditText
内容的唯一方法是使用InputFilter
,它实际上阻止了所有更改。您也可以将showsoftwoinputonfocus
设置为false,以尝试避免键盘出现-但正如我所说,在某些情况下它仍会出现。InputFilter
将阻止它产生任何效果使用android:inputType=“none”、android:textIsSelectable=“true”、android:focusable=“false”@ImtiyazKhalani尝试可能的重复。好吧,这个问题与我的问题不完全相同,他只想让edittext只读,而我的情况与问题描述不同。至于你的第二个答复,谢谢!但是我的问题已经解决了。你的方法也是正确的,但是当你想过滤文本的一部分时,最好使用它@Siddharth Sharma方法是最好的,它适合我,因为我的minSDK版本是21。我将使用您的方法过滤用户粘贴的内容,因为在计算器中允许粘贴。我编辑了更多信息-试图隐藏键盘不能保证用户不能更改内容,如果这很重要,您不能真正依赖它