我在Android(4.2)中有一个 WebView ,它使用javascript(置于资源文件夹中)加载本地html 。
我的问题是,我无法在我的WebView中滚动。我通过类似的SO问题尝试了很多事情和建议,但没有任何效果。
我的Html只是一个简单的div-Tag,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页面中是否存在问题。任何想法我怎么能让滚动回去工作?
我非常感谢每一个答案=)提前致谢!
答案 0 :(得分:2)
我找到了解决方案:
我实现了自己的onTouchListener并自己进行滚动。从另一个SO问题/答案(Android: Scrolling an Imageview)
得到了这个想法认为这可能对其他人有帮助,因为它似乎是WebView中的一个小错误,带有某些html文件,从file:///加载......