单击按钮时,我使用以下代码隐藏键盘:
private OnClickListener saveButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
final View activityRootView = findViewById(R.id.myProfileDetails);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
}
});
//other code that does something
}
}
该按钮还可以执行其他操作,但没有一个与键盘相关,按下按钮时,活动不会更改。
我的活动中还有两个EditText
字段。当我使用应用程序并点击任一字段时,它们会获得焦点并出现键盘。当我按下按钮时,键盘消失,其他代码完全按照应有的顺序执行。在这种情况下,一切都很完美。
第二次点击EditText
字段时出现问题。现在,EditText
获得焦点,但键盘出现并几乎立即消失,而我没有做任何事情。我猜我的代码使键盘在我第一次点击按钮后永久消失。为什么会发生这种情况?我该如何纠正?
答案 0 :(得分:0)
您正在初始化ClickListener
中的OnClick
。这将在heightDiff>100
后立即隐藏键盘。不要这样做。
喜欢这个
private OnClickListener saveButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(
editText.getWindowToken(), 0);
//other code that does something
}
}