Android – 键盘不出现在浮动窗口

我正在编写一个应用程序,它使用以下代码在屏幕上绘制运行应用程序的edittext:

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"); } } }); 

但是,尽pipe这被称为,从logcat看到,没有任何反应。 到目前为止,我发现的唯一方法是显示键盘:

 getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0, 0); 

但是,似乎input到屏幕上,而不是编辑文本。 编辑文本显示时,我也尝试了清晰的焦点,但无济于事。

我猜这个问题是因为我正在使用“浮动窗口”,但必须有一种方法来使这个工作,如浮动计算器的应用程序存在的PlayStore需要input..任何人有任何想法? 我被绊倒:(

Solutions Collecting From Web of "Android – 键盘不出现在浮动窗口"

我的坏..我意识到如果我删除WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE它工作正常..愚蠢的错误

使用WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

 WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, PixelFormat.TRANSLUCENT); 

有关更多详细信息和示例,请点击以下链接: https : //github.com/atifmahmood29/overlays-floating-window-like-facebook-messenger

编程方式:

 editText.requestFocus(); 

或者通过XML:

 <EditText...> <requestFocus /> </EditText>