如何在android中的editText中输入最大长度的文本后自动隐藏键盘?

时间:2014-02-20 07:47:29

标签: android textfield textwatcher

是新的机器人 在使用editText的app中,其最大文本长度为2
这是我的问题 在editText(即)中输入两个字符后,当editText达到最大文本长度时,它会自动隐藏软键盘。 任何人都可以说如何做到这一点并且有可能吗? 我在这样的堆栈溢出中得到了一些答案

InputMethodManager inputManager = 
        (InputMethodManager) context.
            getSystemService(Context.INPUT_METHOD_SERVICE); 
inputManager.hideSoftInputFromWindow(
        this.getCurrentFocus().getWindowToken(),
        InputMethodManager.HIDE_NOT_ALWAYS); 

这够了吗?或者我想在编码中做任何额外的事情? 感谢

3 个答案:

答案 0 :(得分:3)

在onTextChanged()

中使用这个
   {
       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
       imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
}

答案 1 :(得分:2)

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0);

答案 2 :(得分:1)

您实际上需要在更改edittext文本时进行侦听。然后,当文本达到特定长度时,您可以隐藏键盘。您可以像这样使用Textwatcher。

     // replace R.id.editText1 with your edittext id
    final EditText myEditText = (EditText) findViewById(R.id.editText1);
    final int maxTextLength = 2;//max length of your text

    InputFilter[] filterArray = new InputFilter[1];
    filterArray[0] = new InputFilter.LengthFilter(maxTextLength);
    myEditText.setFilters(filterArray);

    myEditText.addTextChangedListener(new TextWatcher(){


   @Override
   public void afterTextChanged(Editable arg0) {
    }

   @Override
   public void beforeTextChanged(CharSequence s, int start, int count, int after) {

   }

   @Override
   public void onTextChanged(CharSequence txtWatcherStr, int start, int before, int count){
       if(count==maxTextLength ){
           InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
           imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
    }
 }
});
相关问题