对于某些设备,Android WebView无法从键盘接收输入

时间:2014-12-23 08:15:26

标签: android android-webview

我有一个奇怪的情况,我使用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?

1 个答案:

答案 0 :(得分:0)

请检查是否安装了Android System WebView。 如果是这样,请进入设置 - >应用 - > Android系统Webview-&gt;卸载更新

,以卸载更新