0

以下のコードは、別の textField にフォーカスを移したときに機能しますが、画面のどこかをタップしただけでは機能しません (onFocusChanged イベントをトリガーしたい)。どうすればこれを達成できますか?また、他のテキストフィールドにフォーカスがないことも確認する必要があります。フォーカスがある場合はキーボードを保持する必要があるためです。

usernameET.setOnFocusChangeListener((new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(v == usernameET) {
                    Log.d(LoginPage.Tag, "keyboardOnTouch");
                    if (hasFocus)
                    {
                        ((InputMethodManager) a.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(usernameET,
                                InputMethodManager.SHOW_FORCED);
                    }
                    else {
                        ((InputMethodManager) a.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(
                                usernameET.getWindowToken(), 0);
                    }
                }
            }
        }));
4

1 に答える 1

1

onTouchEvent() を使用して、ソフトキーボードを非表示にすることができます。

@Override
    public boolean onTouchEvent(MotionEvent event) {
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.
                                                        INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
        return true;
    }

これが役立つことを願っています。

于 2013-02-07T04:30:23.680 に答える