Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中,如何在editText中输入最大文本长度后自动隐藏键盘?_Android_Textfield_Textwatcher - Fatal编程技术网

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

在android中,如何在editText中输入最大文本长度后自动隐藏键盘?,android,textfield,textwatcher,Android,Textfield,Textwatcher,我是android新手 在使用editText的应用程序中,其最大文本长度为2 这里是我的问题 在editText中输入两个字符后(即当editText达到最大文本长度时),它将自动隐藏软键盘 有人能说怎么做吗?有可能吗? 我在堆栈溢出中得到了一些答案 InputMethodManager inputManager = (InputMethodManager) context. getSystemService(Context.INPUT_METHOD_

我是android新手
在使用editText的应用程序中,其最大文本长度为2
这里是我的问题
在editText中输入两个字符后(即当editText达到最大文本长度时),它将自动隐藏软键盘
有人能说怎么做吗?有可能吗?
我在堆栈溢出中得到了一些答案

InputMethodManager inputManager = 
        (InputMethodManager) context.
            getSystemService(Context.INPUT_METHOD_SERVICE); 
inputManager.hideSoftInputFromWindow(
        this.getCurrentFocus().getWindowToken(),
        InputMethodManager.HIDE_NOT_ALWAYS); 
够了吗?或者我想在编码方面做些额外的事情?
谢谢

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

在onTextChanged()中使用此选项


在editText中输入2个文本后,键盘将自动隐藏?否,您需要在editText上的textchanged上放置一个侦听器,并在每次更改时检查editText的字符数。如果该数字大于2,则使用上述方法隐藏键盘。您能告诉我如何操作吗?当他达到2个字符时,在应用程序中隐藏键盘的目的是什么?如果希望EditText最多为2个字符,可以这样做:EditText myEditText=(EditText)findViewById(R.id.editText1);InputFilter[]过滤器=新的InputFilter[1];过滤器[0]=新的InputFilter.LengthFilter(2)//筛选为2个字符myEditText.setFilters(筛选);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);
    }
 }
});
   {
       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
       imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
}