0

单击按钮时,我正在使用以下代码隐藏键盘:

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获得焦点,但键盘几乎立即出现和消失,而我没有做任何事情。我猜我的代码在我第一次单击按钮后使键盘永久消失。为什么会发生这种情况,我该如何纠正?

4

1 回答 1

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

    }

}
于 2012-12-02T11:56:41.680 回答