4

私はPopupWindowクラスを使用しPopupWindowていますが、クラスがありEditTextます。問題は、PopupWindowが表示されているときにクリックするとEditText、ソフトキーボードが表示されず、入力を入力できないことです。誰かがこの問題を解決する方法を教えてもらえますか?

4

4 に答える 4

15

新しい を作成するときはPopupWindow、別のコンストラクター メソッドを使用しますfocusable = true;。ビューのみをフォーカス可能に設定する必要があります。ソフト キーボードは を表示します。

public PopupWindow(View contentView, int width, int height, boolean focusable) {}

デフォルトのフォーカス可能は「false」です

于 2011-12-14T15:37:02.177 に答える
5

理解するのにかなり時間がかかりましたが、ここに行きます:

ポップアップの作成中に、フォーカスを受け取ったときに強制的にソフト キーボードを開くようにテキスト ボックス (Edittext) を設定する必要がありました。

 txtBox.setOnFocusChangeListener(new OnFocusChangeListener() {

        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus == true){
                InputMethodManager inputMgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                inputMgr.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
                inputMgr.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT);

            }
        }
    });
    txtBox.requestFocus();
于 2011-04-08T14:44:14.670 に答える
4

このコード popupWindow.setFocusable(true);を追加します。

于 2012-03-06T09:22:52.753 に答える
2

これは私にとってはうまくいきました。

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(final View v, final boolean hasFocus) {
            if (hasFocus && editText.isEnabled() && editText.isFocusable()) {
                editText.post(new Runnable() {
                    @Override
                    public void run() {
                        final InputMethodManager imm =(InputMethodManager)getBaseContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.showSoftInput(editText,InputMethodManager.SHOW_IMPLICIT);
                    }
                });
            }
        }
    });
于 2017-11-01T00:38:44.290 に答える