3

我只想修复 webview 上的图像,如下图所示。我做了一些事情来实现这一点,它实际上适用于 HTC One、三星 S2-S3-S4 等新型手机。但对于像 Galaxy Ace 这样的小屏幕设备,它不起作用,而且看起来非常小。例如图片上的android图像看起来居中但非常小。

这是我所做的

    webView = (WebView)findViewById(R.id.webView);
    WebSettings settings = webView.getSettings();
    settings.setUseWideViewPort(true);
    settings.setLoadWithOverviewMode(true);
    settings.setJavaScriptEnabled(true);
    String data = "<body><center><img width=\""+width+"px\" height=\""+height+"px\" src=\"" + url + "\" /></center></body></html>";
    webView.loadData(data, "text/html", null);

宽高计算

//linearWebview is the parent of webview, I calculated its width and height and set the image dimensions according to that values.
linearWebview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            width = linearWebview.getWidth();
            height = linearWebview.getHeight();
        }
    });

所以我的问题是为什么它在小屏幕设备上不起作用,我该如何解决这个问题?

在此处输入图像描述

4

4 回答 4

2

试试这个方法

不要在 Pixel 中指定宽度修复,因为 android 中有很多屏幕尺寸和分辨率,使用这样的相对尺寸。

String data = "<body><center><img height=\"auto\" style=\"max-width:100\\%\"; src=\"" + url + "\" /></center></body></html>";
webView.loadData(data, "text/html", null);

在此我们指定了宽度 100% 和高度“自动”。这样它将保持纵横比并且图像不会被拉伸。

于 2013-09-25T05:43:05.840 回答
1

I would comment, but I don't have enough reputation yet. Sorry. Is your issue with the webview not sizing correctly, or the image inside the webview? If it is the webview, try wrapping it in another view. It may be that when you are using a smaller screen size, it is using a different size image, and instead of stretching it, it just puts it there. fill_parent should get it to stretch, and then set the wrapper to the size you want.

于 2013-09-26T21:07:49.230 回答
1

与您的情况类似,我的应用程序中有一个 webview,它只显示一个图像,需要缩放以适应屏幕的宽度。我使用该功能WebView.setInitialScale(int scaleInPercent)来调整宽度。我在这里假设您在网站上的图像始终具有恒定的宽度。

代码:

// For an image of fixed width 640 pixels
Double val = Double.valueOf(width) * 100d / Double.valueOf(640);
mWebView.setInitialScale(val.intValue());
于 2013-09-20T09:54:58.633 回答
0

这样做。。

String data = "<body><center><img height=\"auto\" width=\"100\\% style=\"min-height:30\\%\"; src=\"" + url + "\" /></center></body></html>";
webView.loadData(data, "text/html", null);

您可以按百分比设置图像的 minHeight。希望这会对您有所帮助。

于 2013-09-27T06:10:03.990 回答