我有EditText应该获得飞机座位号的用户输入(如17G,5A等) 问题是我将EditText输入类型设置为文本,它总是打开带有文本的软键盘。 但我的输入始终以数字开头,因此用户必须始终将键盘切换为数字并返回。 问题是如何在数字所在的部分设置键盘打开文本键盘? 我试着把android:inputType =“numeric”但它只是打开数字键盘,之后无法输入任何文字。
答案 0 :(得分:1)
由于座位号(您的示例)将具有不同的数字计数,因此很难猜测何时从一种键盘类型更改为另一种键盘类型。
否则,您可以通过编程方式更改EditText输入类型:
((EditText) mView.findViewById(R.id.et_seat_number)).addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
EditText etSeatNumber = (EditText) mView.findViewById(R.id.et_seat_number);
if(editable.length() > 2)
etSeatNumber.setInputType(InputType.TYPE_CLASS_NUMBER);
else{
etSeatNumber.setInputType(InputType.TYPE_CLASS_TEXT);
}
}
});
您还可以使用软键盘IME选项更改键盘输入类型。 https://stackoverflow.com/a/40526750/6672482