2

サービスで、編集テキストを含むウィンドウマネージャーレイアウトに追加するアプリを作成しています。すべて正常に動作し、キーボードは表示されます。ただし、ウィンドウ マネージャーに 2 番目の同じレイアウトを追加すると、最初の editext がフォーカスを失い、何も入力できないか、ポインターが表示されるためフォーカスを失っていない可能性がありますが、キーボードが表示されず、最後に追加されたレイアウトのみが表示されます。

私はそのようにウィンドウマネージャにビューを追加しています:

params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                PixelFormat.TRANSLUCENT);
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
singleLayout = inflater.inflate(R.layout.single_layout, null);
windowManager.addView(singleLayout, params);

そのコードで手動でキーボードを開こうとしました:

InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

しかし、うまくいきませんでした。この方法もうまくいきませんでした:

public static void forceFocusOnView(final View view) {
        if (view == null)
            return;
        view.post(new Runnable() {
            public void run() {
                view.clearFocus();
                view.post(new Runnable() {
                    public void run() {
                        view.requestFocus();
                    }
                });
            }
        });
    }

最後に追加されたレイアウトでのみキーボードが常に表示されます。解決策に感謝します。

4

0 に答える 0