我有一个奇怪的情况,我使用webview打开一个表单页面,允许用户在其中输入一些信息。当我在三星这样的设备上尝试它时,它可以正常工作,但是当我在其他设备(如xiaomi,asus等)中尝试它时,它不起作用。键盘弹出,但当我输入它时,页面中的文本框刚刚失去焦点。我找到了一个使用这个代码的工作,但是有一个不好的方面,三星的webview总是在每次触摸屏幕时都会回到顶部(但是在xiaomi等工作正常)。有没有办法让它们都适用于它们?
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?
答案 0 :(得分:0)
请检查是否安装了Android System WebView。 如果是这样,请进入设置 - >应用 - > Android系统Webview-&gt;卸载更新
,以卸载更新