对于一个项目,我希望用户能够在WebView上放大和缩小,但我不希望用户能够将图像放大到目前为止它将显示空白底部(match_parent
和width
的WebView为height
。
换句话说:我想在webview上放置最大缩放比例,最大缩放与图像高度相关,而不是宽度(我现在拥有的)。
我如何实现这样的功能?
答案 0 :(得分:2)
通常,要使您的应用在所有设备中保持一致,您必须将其设置为:
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 ::
import android.app.Activity; import android.os.Bundle; import android.webkit.WebView;
public class Browser扩展了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 +。
答案 1 :(得分:1)
将<meta name='viewport' content='target-densitydpi=device-dpi,initial-scale=1,minimum-scale=1,user-scalable=yes'/>
添加到您要在webview中显示的html内容中。
您可以根据自己的意愿更改minimum-scale = 1
答案 2 :(得分:0)
查看webSettings课程。例如:
webview.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
答案 3 :(得分:0)
您可以使用WebSettings.ZoomDensity功能。 使用它你可以设置setDefaultZoom。