千磨万击还坚劲,任尔东西南北风。这篇文章主要讲述Android:请求关注通过WindowManager添加的视图(WebView)相关的知识,希望能为你提供帮助。
当我的应用程序没有在前台运行时,我在服务中显示webView
作为alertDialog
,因此,我的webView
通过WindowManager.addView()
方法附加到屏幕。
webView
有一个input
字段,我希望用户可以访问。不幸的是,当用户点击input
字段时,它没有显示用户允许输入的键盘。
我的webView
在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
的情况不同。我真的很感激有关如何请求焦点到
webView
允许输入的任何帮助。答案一段时间后,我自己找到了问题的答案。
我尝试了很多不同标志的组合,但都没有用,除非我尝试过
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
【Android(请求关注通过WindowManager添加的视图(WebView))】这些标志给出了我想要的结果,并希望它可以帮助经历同样的事情。
推荐阅读
- 获取请求在Angular 5 app中抛出404错误
- 将c#console app转换为c#windows form app
- Websphere Application Server异常ADMC0016E(系统无法创建SOAP连接器以连接到主机端口)
- 程序类型已存在(android.support.v7.util.AsyncListUtil $ 1)
- 在运行时更改Android Camera 2的Flash设置
- InApp订阅已过期,如何检查服务器端
- 使用AWS Android SDK发送JWT令牌
- 从已安装该应用的设备中删除未发布的应用(Android)
- Android Studio需要澄清