由于这个主题很受欢迎,我不得不说我搜索了大量类似的问题,但仍然没有一个有效的解决方案。
问题简短描述:在我的Activity
我有一个"搜索模式",当它启动时我会显示软键盘,当它完成时,我想隐藏键盘,但可以&# 39;找不到办法。
我尝试过:
InputMethodManager.HIDE_IMPLICIT_ONLY
而不是0 InputMethodManager.HIDE_NOT_ALWAYS
而不是0 windowSoftInputMode="stateAlwaysHidden"
windowSoftInputMode="stateHidden"
似乎没有任何效果,键盘保持可见。代码启动"搜索模式":
private void onStartSearch(){
isSearch = true;
tvMyFriends.setVisibility(View.GONE);
etSearch.setVisibility(View.VISIBLE);
etSearch.startAnimation(AnimationUtils.loadAnimation(this, R.anim.on_show_search));
etSearch.requestFocus();
invalidateOptionsMenu();
imm.showSoftInput(etSearch, InputMethodManager.SHOW_IMPLICIT);
}
完成"搜索模式的代码":
private void onCancelSearch(){
Animation animHideSearch = AnimationUtils.loadAnimation(this, R.anim.on_cancel_search);
animHideSearch.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
/* no action required */
}
@Override
public void onAnimationEnd(Animation animation) {
etSearch.setVisibility(View.GONE);
tvMyFriends.setVisibility(View.VISIBLE);
isSearch = false;
invalidateOptionsMenu();
if(etSearch.getText().toString().length()>0)
etSearch.setText("");
etSearch.clearFocus();
imm.hideSoftInputFromInputMethod(etSearch.getWindowToken(), 0);
}
@Override
public void onAnimationRepeat(Animation animation) {
/* no action required */
}
});
etSearch.startAnimation(animHideSearch);
}
问题:我怎么能强迫该死的键盘消失?
UPD:设置赏金。仍在寻找可靠,独立于设备的解决方案来强制隐藏软键盘或检测键盘当前是否正在显示。
答案 0 :(得分:1)
在将EditText的可见性更改为GONE之前隐藏键盘。
...
imm.hideSoftInputFromWindow(etSearch.getWindowToken(), 0);
etSearch.setVisibility(View.GONE);
...