次のコードを使用して、実行中のアプリケーションの画面に編集テキストを描画するアプリケーションを作成しています。
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
PixelFormat.TRANSLUCENT);
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
windowManager.addView(mEditText, params);
edittext の xml は次のとおりです。
<EditText
android:id="@+id/mEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="3"
android:inputType="textAutoComplete|text"
android:focusable="true"
android:focusableInTouchMode="true" />
ただし、これに焦点を合わせてもキーボードは表示されません。また、onFocusListener を使用してプログラムで起動しようとしました。
mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus) {
Log.d("", "Has focus");
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(v, InputMethodManager.SHOW_IMPLICIT);
} else {
Log.d("", "Lost focus");
}
}
});
しかし、それは呼び出されますが、logcat から見ると何も起こりません。キーボードを表示するためにこれまでに見つけた唯一の方法は、次を使用することです。
getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0, 0);
しかし、それは編集テキストではなく画面に入力しているようです。また、編集テキストが表示されているときに明確なフォーカスを試みましたが、役に立ちませんでした。
問題は「フローティングウィンドウ」を使用しているためだと思いますが、入力を受け取るプレイストアにフローティング電卓などのアプリが存在するため、これを機能させる方法が必要です..誰かアイデアはありますか? 私は困惑しています:(