サービスで、編集テキストを含むウィンドウマネージャーレイアウトに追加するアプリを作成しています。すべて正常に動作し、キーボードは表示されます。ただし、ウィンドウ マネージャーに 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();
}
});
}
});
}
最後に追加されたレイアウトでのみキーボードが常に表示されます。解決策に感謝します。