2

我有什么样的EditText应该获取用户输入的飞机座位号(如17G,5A等) 问题是那么我设置的EditText输入类型为文本,它总是打开软键盘文本。 但是我的输入始终以数字开头,所以用户必须将键盘切换为数字并始终返回。 问题是如何设置键盘来打开数字所在部分的文本键盘? 我试着把android:inputType =“numeric”,但它只是打开数字键盘,并且不可能在之后输入任何文本。的Android EditText上的软键盘问题

+0

试试这个 http://stackoverflow.com/questions/4469936/getting-numeric-keyboard-default – kannappan

+0

可悲的是,其中是没有什么用处。 – user872423

回答

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); 
      } 
     } 
    }); 

您也可以使用softkeyboard IME选项更改键盘输入型。 https://stackoverflow.com/a/40526750/6672482