プロジェクトの場合、ユーザーが WebView でズームインおよびズームアウトできるようにしたいのですが、ユーザーが画像をズームアウトして、下部に空白が表示されるようにしたくありません(WebView はmatch_parent
、 )。width
height
言い換えれば、幅ではなく画像の高さに関連する最大ズーム/スケールをwebviewに配置したいと思います(私が今持っているもの)。
どうすればそのような機能を実現できますか?
通常、アプリをすべてのデバイスで一貫して動作させるには、次のように設定する必要があります。
this.appView.getSettings().setUseWideViewPort(true);
this.appView.getSettings().setLoadWithOverviewMode(true);
this.appView.getSettings().setSupportZoom(true);
this.appView.getSettings().setDefaultZoom(ZoomDensity.FAR);
this.appView.getSettings().setBuiltInZoomControls(true);
this.appView.setInitialScale(0);
ここで、viewPort メタ タグを追加する必要があります。
<meta name="viewport" content="width=640,height=device-height,target-densityDpi=device-dpi,minimum-scale=1" />
minimum-scale
好みに合わせて属性を変更して、 最適なものを見つけることができます。
ただし、デバイスの向きを変えて縦向きまたは横向きにリロードすると、問題が発生することがあります。
そのために、通常は次のコードを使用します。このコードは、デスクトップ バージョンの Google ホームページを読み込み、完全にズームアウトしてwebview
.
BrowserLayout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
Browser.java: :
android.app.Activity をインポートします。android.os.Bundle をインポートします。android.webkit.WebView をインポートします。
public class Browser extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.BrowserLayout);
String loadUrl = "http://www.google.com/webhp?hl=en&output=html";
// initialize the browser object
WebView browser = (WebView) findViewById(R.id.webview);
browser.getSettings().setLoadWithOverviewMode(true);
browser.getSettings().setUseWideViewPort(true);
try {
// load the url
browser.loadUrl(loadUrl);
} catch (Exception e) {
e.printStackTrace();
}
}
}
ここでsetUseWideViewPort(true)
ビューポート設定をロードし、目的のロールにスケーリングするか、使用できますsetLoadWithOverviewMode()
が、API 7 以降でのみ機能します。
<meta name='viewport' content='target-densitydpi=device-dpi,initial-scale=1,minimum-scale=1,user-scalable=yes'/>
これを、webview に表示する html コンテンツに追加します。
ここで、必要に応じて minimum-scale=1 を変更できます
webSettingsクラスを確認してください。例:
webview.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
これにはWebSettings.ZoomDensity関数を使用できます。それを使用して、setDefaultZoom を設定できます。