【发布时间】:2014-12-23 08:15:25
【问题描述】:
我有一个奇怪的案例,我使用 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?
【问题讨论】:
-
@maveň 我已经使用了那里的所有答案,但正如我所说,它们都不适用于所有 android 设备