java - samsung android 8 和 8.1 - 以编程方式更改键盘
问题描述
我遇到了问题,当使用 android 8.0 和其他三星使用 Android 8.0 或 8.1 以编程方式更改键盘时,
我在华为或其他我用 android 8.0 或 8.1 测试过的手机上没有任何问题。
在我的 EditText 中,我设置了 onSelectionChanged 方法。
我想在数字化过程中更换键盘。尤其是键盘在文本模式下启动,在数字模式下切换,接下来需要在文本模式下重新调整,让你在数字盘时变得容易(例如:AA123BB)
@Override
protected void onSelectionChanged(int selStart, int selEnd) {
super.onSelectionChanged(selStart, selEnd);
if (selEnd > 1 && selEnd < 5) {
if(getInputType() != InputType.TYPE_CLASS_NUMBER )
setInputType(InputType.TYPE_CLASS_NUMBER);
} else {
if(getInputType() != (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS ) )
setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
}
}
当键盘返回文本类型时,您可以看到符号键盘而不是字母。 您可以在此图像中找到结果
解决方案
这实际上不受支持。没有强制更改键盘的方法,并且大多数键盘不支持在已启动的输入连接上更改类型。没有可靠的方法来做到这一点。setInputType 仅在下次打开键盘时才能保证在 int hat 字段中起作用。
推荐阅读
- linux - 相当于linux中的windows minifilter驱动预写保护?
- javascript - 在javascript中获取具有特定值的新数组更改为.map()
- anylogic - 将代理从现有队列移动到行人库中的较短队列
- java - 根据 X509Certificate CA 的名称约束扩展验证名称
- angular - 绑定属性值上的 Angular 组件选择器
- sql - 无需进行两次查询即可限制 COUNT 聚合窗口函数的方法
- javascript - 页面内链接之间的平滑滚动
- lua - LUA:将字符的出现次数计入字符串?
- vba - VBA:将 .MPP 文件另存为 Excel 工作簿到 SharePoint 链接
- python - 运行异步进程时更新 GUI