在FragmentActivity中主要包含了WebView和ProgressBar,ProgressBar主要用来显示加载进度。在4.0以及以下的系统中,点击webview加载的网页中的输入控件都能正常弹出输入法,但在4.2和4.4的系统中都不行。google了一下,尝试使用webview.requestFocus()以及在WebChromeClient接口的onProgressChanged()方法中调用 webview. requestFocus()都无效。也尝试了实现了WebView的OnTouchLister接口,在onTouch方法中调用webview.requestFocus()还是无效。对webview不是很了解,项目又在赶,求各位有经验的朋友赐教。 先谢过了!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
针对您在不同Android系统版本上遇到的WebView输入法不弹出的问题,这里有几个可能的解决方案和排查方向,您可以尝试一下:
确保焦点与可点击性:
android:focusable="true"
和 android:focusableInTouchMode="true"
,同时在代码中调用 webView.setFocusable(true); webView.setFocusableInTouchMode(true);
。重写Activity的dispatchTouchEvent方法:
dispatchTouchEvent(MotionEvent ev)
方法,在适当的时候请求WebView的焦点。@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (!webView.hasFocus()) {
webView.requestFocus();
}
}
return super.dispatchTouchEvent(ev);
}
使用InputMethodManager:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(webView, InputMethodManager.SHOW_IMPLICIT);
检查WebChromeClient的实现:
webview.requestFocus()
。兼容性问题:
<activity
android:name=".YourActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
</activity>
更新WebView组件:
禁用硬件加速:
<application
...
android:hardwareAccelerated="false">
</application>
请逐一尝试上述建议,并检查每次更改后的效果。希望这些建议能帮助您解决问题。