我想在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这样的标签中,我得到的是左上角非常小的图像,所有其他区域的屏幕只是背景网页。
以下是运行上述代码后Galaxy Tab2的屏幕截图。 请你有任何我缺乏的建议。在此先感谢。
答案 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。