我想用来显示图像并使其可缩放的 WebView 有一个奇怪的问题。我的活动中有以下方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_manual);
WebView webView = (WebView)findViewById(R.id.webView);
webView.loadUrl("file:///android_res/drawable/some_image.jpg");
webView.setInitialScale(getScale());
webView.getSettings().setBuiltInZoomControls(true);
}
该getScale()
方法计算了一个比例,我可以使用它webView.setInitialScale()
来将我的图像精确地缩放到全屏宽度,并且它可以工作。内置缩放控件在某种程度上也可以工作,但是:
放大图像后,我无法缩小回初始比例,我假设是因为最小比例大于我的初始比例。
使用 WebSettings 设置缩放密度没有帮助,我认为即使它在我的手机上也不会在另一个手机上。
我还尝试过:我制作了一个 HTML 页面,其中包含图像作为 body 元素的唯一子元素。我将它的宽度设置为 100%,并以这种方式正确缩放。但是,如果我再次放大,图像会立即调整大小以再次适合屏幕宽度。
我找到了一些答案,但没有一个真正有帮助:
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setDefaultZoom(ZoomDensity.FAR);
webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
一种解决方案提到使用反射来更改 WebView 类以忽略限制,但我担心这可能会在某些旧版本的 Android 上破坏我的应用程序。我必须兼容低至 API 级别 9 的设备。