以编程方式设置 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 并检查 更新!
我们正在以编程方式设置 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 并检查 更新!