如何使用适合屏幕在所有设备中显示Webview内部的WebPage的某些部分

时间:2012-11-22 06:54:00

标签: android webview android-webview webpage android-websettings

我想在WebView中显示WebPage。到目前为止,这很好。

但我有WebPage(如下所示),我想要它的某些部分。我的意思是只有左上角应该在所有设备中都适合屏幕模式。

自从过去两三天以来,我正在解决这个问题。

我想要的是什么:我希望显示网页的左上角,以显示内部Webview,无论Stratergy可能是缩放还是任何其他选项,但它应该适合所有设备的屏幕

还有一件事我无法更改网页的源代码,因为它已修复。  我必须通过代码本身进行管理。

enter image description here

我尝试了什么:我已经引用了Stackoverflow链接,但没有运气。

这是我的代码。 :

            WebView wv;
        wv = (WebView) findViewById(R.id.webview_MyPoops);
        wv.getSettings().setJavaScriptEnabled(true);

        // wv.setInitialScale(185);

        // wv.setInitialScale(30);
        String URL = "MY_LINK";

        wv.loadUrl(URL);

        WebSettings webSettings = wv.getSettings();
        webSettings.setSavePassword(false);
        webSettings.setSaveFormData(false);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setSupportZoom(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setUseWideViewPort(true);

我正在设备中显示完整的网页。

它可以在我的LG设备(分辨率为480 * 800)中正常工作但在大设备或像Galaxy Tab2这样的标签中,我得到的是左上角非常小的图像,所有其他区域的屏幕只是背景网页。

以下是运行上述代码后Galaxy Tab2的屏幕截图。 enter image description here 请你有任何我缺乏的建议。在此先感谢。

5 个答案:

答案 0 :(得分:1)

尝试使用此代码跳转此工作为您。

webview.setInitialScale(getScale()); 



private int getScale(){
            Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
            int width = display.getWidth(); 
            Double val = new Double(width)/new Double(200);
            Log.e("hh", "** "+val);
            val = val * 100d;
            Log.e("hh", "** "+val);
            return val.intValue();
        }

答案 1 :(得分:1)

WebView x;

x.setInitialScale(1);

这是可能的变焦。但是对于一些网站而言,它看起来只是纯粹的UGLY。

这是我找到的第二个版本

test1.getSettings().setDefaultZoom(ZoomDensity.FAR);

这是一个不错的全能,似乎只是缩小了很多,但仍然不是我想要的。

现在这是我的最终解决方案。

x.getSettings().setLoadWithOverviewMode(true);
x.getSettings().setUseWideViewPort(true);

基本上,在这样的另一个问题中回答了这些问题。

setLoadWithOverviewMode(true) 

加载WebView完全缩小

setUseWideViewPort(true)

答案 2 :(得分:0)

您可以尝试使用HtmlCleaner(如何使用它here的示例)从网页获取html,然后提取要显示的部分并使用以下命令将其加载到WebView中:{ {1}}。

我在我的某个应用中使用此方法重新格式化页面,以便在移动设备上使用它。

答案 3 :(得分:0)

在HTML页面上,您可以使用target-densitydpi=240;之类的内容 根据设备类型,只需从Java代码中设置此参数,页面将自动适应目标密度。

答案 4 :(得分:0)

我认为应该只在网页级别进行修复,理想情况下WebView无法在此处执行任何操作。 WebView只是一个浏览器(特定的铬浏览器),它应该按照网页的指示进行渲染。

为了真正解决您的问题,您应该尝试修改网页的CSS。