Android (4.2) に WebView があり、JavaScript を使用してローカル html をロードします( assetsフォルダーに配置されます)。
私の問題は、WebView をまったくスクロールできないことです。私は同様のSOの質問で多くのことや提案を試みましたが、何もうまくいきませんでした.
私の Html は、Kinetic-js フレームワークが画像とその上にキャンバスを描画するために使用する単純な div-Tag です。
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 ページの問題かはわかりません。スクロールを元に戻す方法はありますか?
すべての回答に感謝します =) よろしくお願いします!