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

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

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

我在过去两三天就解决了这个问题。

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

还有一件事我无法改变网页的源代码,因为它是固定的。 我必须通过代码本身进行管理。

在此处输入图像描述

我尝试了什么:我已经引用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这样的标签中,我得到的是左上角非常小的图像,所有其他屏幕区域只是WebPage的背景。

以下是运行上述代码后Galaxy Tab2的屏幕截图。 在此处输入图像描述 请你有任何我缺乏的建议。 提前致谢。

试试这个代码跳这个工作为你。

 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(); } 
 WebView x; x.setInitialScale(1); 

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

这是我发现的第二个版本

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

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

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

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

基本上这些做法在另一个问题中得到了解答。

 setLoadWithOverviewMode(true) 

加载WebView完全缩小

 setUseWideViewPort(true) 

您可以尝试使用HtmlCleaner (如何在此处使用它的示例)从网页获取html,然后提取要显示的部分并使用以下WebView.loadData();将其加载到WebView中: WebView.loadData();

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

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

我认为修复应该只在网页级别完成,理想情况下WebView不能在这里做任何技巧。 WebView只是一个浏览器(特定的铬浏览器),它应该按照网页的指示进行渲染。

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