我试图在同一个屏幕上用密码和数字创建两个字段。但对他们来说,默认情况下会调用不同的键盘,这看起来并不好看。怎么解决这个问题呢?
setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD)
和
setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL)
发出不同的键盘。我怎么才能修好它?
1.第一个输入字段:
otpField.getEditText().setType(TYPE_FORMATTED_INVISIBLE_MASK);
otpField.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL);
2.第二个输入字段:
ePINField.getEditText().setType(TYPE_FORMATTED_INVISIBLE_MASK);
ePINField.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
发布于 2021-08-20 06:07:22
一种非常简单但不建议使用的方法是将这两个字段定义为密码,并使第一个EditText
可见。这是没有意义的,因为第一个密码不是密码,但它是一种您想做的事情(我不建议,因为这样会妨碍访问性)。
otpField.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
otpField.getEditText().setTransformationMethod(HideReturnsTransformationMethod.getInstance());
ePINField.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
setTransformationMethod()
方法将保留第一个EditText
,就好像它是一个“正常”数字字段,毕竟它将使数字可见。
这样,这两个键盘在视觉上是完全相同的。
发布于 2021-08-20 06:37:54
您可以通过XML文件来实现这一点。只需将inputType添加到editText中即可。如果您需要密码输入类型,然后使用android:inputType="numberPassword"
,如果您想要纯号文本,那么您可以使用android:inputType="number"
。
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberPassword"/>
https://stackoverflow.com/questions/68863065
复制相似问题