【问题标题】:Android EditText soft keyboard questionAndroid EditText软键盘问题
【发布时间】:2011-10-17 06:45:57
【问题描述】:
我有 EditText 什么应该让用户输入飞机座位号(如 17G、5A 等)
问题是我将 EditText 输入类型设置为文本,它总是用文本打开软键盘。
但是我的输入总是以数字开头,因此用户必须始终将键盘切换到数字并返回。
问题是如何设置键盘以在数字所在的部分打开文本键盘?
我尝试输入 android:inputType="numeric" 但它只是打开数字键盘,之后无法输入任何文本。
【问题讨论】:
标签:
android
android-widget
android-edittext
android-softkeyboard
【解决方案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