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