Android:通过WindowManager请求将重点放在视图(WebView)上

时间:2018-10-19 19:36:36

标签: android input webview android-softkeyboard android-windowmanager

当我的应用未在前台运行时,我正在将const scans=[] { scan().then((scanData)=>{ scans.push(scanData); renderScanList(scans) //you can figure this part out }) .catch(err=>{/*display error*/}) } 显示为服务中的webView,因此,我的alertDialog通过webView附加到了屏幕上方法。

WindowManager.addView()有一个webView字段,我希望用户可以访问。不幸的是,当用户单击input字段时,它没有显示供用户允许输入的键盘

我的inputwebView内部,其参数如下:

cardView

如果我将手机连接到笔记本电脑,并使用笔记本电脑键盘在输入字段中添加输入,则可以正常工作,只是手机上的键盘没有弹出。

此外,输入位于public WindowManager.LayoutParams getParamsForOpenWebView() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, PixelFormat.TRANSLUCENT); params.gravity = Gravity.START | Gravity.TOP; params.x = left; params.y = top; return params; } else { WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, PixelFormat.TRANSLUCENT); params.gravity = Gravity.START | Gravity.TOP; params.x = left; params.y = 200; return params; } } 内部,因此与webView相比,我不能使用View.requestFocus()来获得焦点。

对于如何请求将焦点集中到EditText以允许输入的内容,我将非常感激。

1 个答案:

答案 0 :(得分:0)

过一会儿,我自己找到了问题的答案。

我尝试了很多不同标志的组合,但没有奏效,除非我尝试过

WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                    | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                    | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

这些标志给出了我想要的结果,并希望它能帮助经历相同结果的人。