是新的机器人
在使用editText的app中,其最大文本长度为2
这是我的问题
在editText(即)中输入两个字符后,当editText达到最大文本长度时,它会自动隐藏软键盘。
任何人都可以说如何做到这一点并且有可能吗?
我在这样的堆栈溢出中得到了一些答案
InputMethodManager inputManager =
(InputMethodManager) context.
getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(
this.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
这够了吗?或者我想在编码中做任何额外的事情? 感谢
答案 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);
}
}
});