您好,我正在制作 自定义拨号器,所以我创建了自己的输入板。
问题是如何禁用 EditText 但仍允许剪切/复制/粘贴? 股票拨号器可以做到这一点。
我试过 android:focusable="false"
但它禁用剪切/复制(尽管仍然可以粘贴)。
我还尝试以编程方式禁用 inputType
禁用所有三个命令:
myEditText.setInputType(InputType.TYPE_NULL); //Can't cut/copy/paste
从清单中禁用它也不起作用:
android:configChanges="orientation|keyboardHidden" //Keyboard still popped up
任何解决方案?谢谢
原文由 hrsetyono 发布,翻译遵循 CC BY-SA 4.0 许可协议
经过数小时的研究,我终于找到了适用于所有 API 版本的解决方案。希望这可以节省某人的时间。
如果您正在为 API >= 11 进行开发,解决方案很简单,可以:
1)在EditText的xml文件中添加以下两个属性
要么
2)以编程方式执行以下操作
你完成了。
如果您也想满足 API < 11 的要求,我发现如果您想选择用于复制粘贴的文本,则无法禁止键盘弹出。将 focusable 设置为 false 将禁用键盘,但这无济于事,因为它也禁用了您选择文本的能力。我在 stackoverflow 中找到的任何其他解决方案都不起作用或同时禁用文本选择。
解决这个问题的一种丑陋方法是这样的..
首先在EditText的xml文件中添加这个属性
是的,这已被弃用,但对于使 EditText 在 API 版本 < 11 中不可编辑是必要的。
接下来,我们需要在键盘一出现就隐藏它,这样我们就可以继续选择文本而不会被键盘挡住。
使用下面的代码检测键盘是否出现(从 https://stackoverflow.com/a/9108219/1241783 获得的解决方案),并立即将其隐藏。
它适用于我的情况。虽然你可以看到键盘在一瞬间出现(这是丑陋的部分),但在撰写本文时我想不出任何其他方法来让它工作。如果您有更好的解决方案,请发表评论!
如果这可以节省某人的时间,也请告诉我 :)