我有一个WebView在 Android (4.2) 中加载一个本地 HTML使用javascript(放置在资产文件夹中)。
我的问题是,我无法在我的 WebView 中滚动任何。我通过类似的问题尝试了很多事情和建议,但没有任何效果。
我的 Html 只是一个简单的 div 标签,Kinetic-js 框架使用它来绘制图片并在其上绘制一些画布。
XML 布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_smed_16sp"
android:textColor="@android:color/white"
android:text="@string/ui_floor_plan_building_textView" />
<Spinner android:id="@+id/floor_plan_building_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_smed_16sp"
android:textColor="@android:color/white"
android:text="@string/ui_floor_plan_level_textView" />
<Spinner android:id="@+id/floor_plan_level_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<AutoCompleteTextView android:id="@+id/floor_plan_room_autoTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
android:hint="@string/ui_floor_plan_autocomplete_hint"
android:inputType="number"
android:imeOptions="actionSearch" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<WebView android:id="@+id/floor_plan_webView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
</LinearLayout>
Java onCreate:
this.webView = (WebView) findViewById(R.id.floor_plan_webView);
this.webView.getSettings().setJavaScriptEnabled(true);
this.webView.getSettings().setLoadWithOverviewMode(true);
this.webView.getSettings().setUseWideViewPort(true);
this.webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
this.webView.setScrollbarFadingEnabled(false);
this.webView.setVerticalScrollBarEnabled(true);
this.webView.setHorizontalScrollBarEnabled(true);
this.webView.getSettings().setSupportZoom(true);
this.webView.getSettings().setLightTouchEnabled(true);
this.webView.setWebViewClient(new WebViewClient(){
private boolean initialLoad = true;
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if(this.initialLoad){
this.initialLoad = false;
drawFloorPlan();
}
}
});
this.webView.loadUrl(PATH_FLOOR_PLAN_HTML);
HTML 文件:
<html>
<head>
<title>Floor Plans</title>
<meta charset="UTF-8">
<script type="text/javascript" src="floor_plan.js"></script>
<script type="text/javascript" src="kinetic-v4.0.5.js"></script>
</head>
<body onload="initialize()" style="margin:0px; padding:0px; width:100%; height:100%">
<div id="container"></div>
</body>
</html>
观察:当显示的图像(html 文件)小于 webview 时,只要触摸事件位于显示的 html“外部”,就可以垂直和水平滚动。通常我的图片很大,所以根本没有机会触摸外部并滚动。
我不确定它是否是 WebView 本身或 html 页面的问题。有什么想法可以让滚动恢复工作吗?
我非常感谢每个答案=)提前致谢!