以编程方式设置 inputType 时,EditText 在某些设备上打开错误的键盘

EditText opens wrong keyboard on some devices when setting inputType programmatically

我们正在以编程方式设置 EditText 的 inputType 以支持十进制或非十进制数字:

editText.inputType = if (isDecimal) InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL else InputType.TYPE_CLASS_NUMBER 

这适用于大多数设备并打开带有或不带小数分隔符的数字键盘。然而,在某些设备上它会打开字母数字键盘,例如在装有 8.1.0 的 Moto G5 或装有 Android 8.

的 Caterpillar S31 上

我们如何解决这个问题,以便始终打开数字键盘?

在您所需的 activity 内的 Manifest 文件中试试这个。

android:windowSoftInputMode="stateHidden"

例如-

 <activity
        android:name=".MainActivity"
        android:windowSoftInputMode="stateHidden">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

您可以检查 documentation 以检查其他值。

是否有可能在这些手机上使用 Gboard 键盘

然后请转到 PlayStore 并检查 更新