我有一个奇怪的案例,我使用 webview 打开一个表单页面,允许用户在其中输入一些信息。当我在某些设备(如三星)上试用时,它工作正常,但当我在其他设备(如小米、华硕等)上试用时,它不起作用。弹出键盘,但是当我键入它时,页面中的文本框失去了焦点。我找到了使用此代码的解决方法,但有一个缺点,每次我触摸屏幕时,三星的 webview 总是回到顶部(但在小米等设备上工作正常)。有什么方法可以使它们都适用吗?
mPaymentWebView.getSettings().setJavaScriptEnabled(true);
mPaymentWebView.getSettings().setUseWideViewPort(true);
mPaymentWebView.requestFocus(View.FOCUS_DOWN);
mPaymentWebView.requestFocusFromTouch();
mPaymentWebView.requestDisallowInterceptTouchEvent(true);
mPaymentWebView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
Log.d("test keyboard","in");
mPaymentWebView.requestFocusFromTouch(); //this makes it work
return false;
}
});
这是 XML
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/web_view_payment"
android:focusableInTouchMode="true"
android:windowSoftInputMode="adjustResize"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:id="@+id/progress_bar_webview"
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_alignParentBottom="true"
android:progress="5"
android:max="100"
android:progressDrawable="@drawable/progress_bar" />
</FrameLayout>
我已经使用了这个问题的所有答案,但没有一个能正常工作 Why is Android WebView refusing user input?
最佳答案
请检查是否安装了Android System WebView。 如果是这样,请进入设置->应用->Android 系统 Webview->卸载更新
卸载更新关于Android WebView 无法从某些设备的键盘接收输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27616471/