Android的 - 键盘没有出现在浮动窗口(Android - Keyboard not appe

2019-09-03 11:33发布

我正在写使用下面的代码在屏幕上运行的应用程序上绘制一个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");
                }
            }
        });

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

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

但是,这似乎键入到屏幕上,而不是进入的EditText。 当显示的EditText,但无济于事,我也试着明确可获得焦点。

我猜这个问题是因为我使用了“浮动窗口”,但必须有一个办法,使这项工作作为应用程序,如浮动计算器上采取输入Play商店中存在..任何人有什么想法? 我难倒:(

Answer 1:

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



Answer 2:

使用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



Answer 3:

我用FLAG_NOT_FOCUSABLE解决这个问题



Answer 4:

编程方式:

editText.requestFocus();

或通过XML:

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


文章来源: Android - Keyboard not appearing in floating window