首页 > 解决方案 > 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);
            }
}

当键盘返回文本类型时,您可以看到符号键盘而不是字母。 您可以在此图像中找到结果

标签: javaandroidsamsung-mobileandroid-8.0-oreoandroid-8.1-oreo

解决方案


这实际上不受支持。没有强制更改键盘的方法,并且大多数键盘不支持在已启动的输入连接上更改类型。没有可靠的方法来做到这一点。setInputType 仅在下次打开键盘时才能保证在 int hat 字段中起作用。


推荐阅读