如何在Android中的EditText中输入达到最大长度后自动隐藏键盘?

3

我刚开始接触安卓
在一个应用程序中,我正在使用editText,它的最大文本长度为2
这是我的问题
在输入两个字符后(即)当editText达到最大文本长度时,它应该自动隐藏软键盘
有人能说一下怎么做吗?这可能吗?
我在stackoverflow上找到了一些答案,如下:

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

这是否足够?或者我在编码过程中需要做一些额外的事情吗? 谢谢

3个回答

4

在 onTextChanged() 中使用这个。

   {
       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
       imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
}

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

在输入两个文本后,editText键盘会自动隐藏吗? - user3265781
不,你需要在EditText的textchanged上放置一个监听器,并在每次更改时检查EditText的字符数。如果该数字> 2,则使用上述方法隐藏键盘。 - Nabz
你能告诉我怎么做吗? - user3265781
你的应用程序中隐藏键盘的目的是什么,当他输入2个字符时? 如果你想让EditText最多只能输入2个字符,可以这样做: EditText myEditText = (EditText) findViewById(R.id.editText1); InputFilter[] filters = new InputFilter[1]; filters[0] = new InputFilter.LengthFilter(2); //过滤器限制为2个字符 myEditText .setFilters(filters); - Nabz

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

TextWatcher可以监听文本的变化。当文本长度达到最大长度时,我会简单地关闭键盘。 - Adnan
尝试过这个,但它没有起作用。上面的代码足够了还是需要写其他的? - user3265781

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接