如何正确实施Android Viewport欺骗?

问题描述 投票:1回答:1

我最近构建了一个应用程序,它使用全屏Web视图来加载我不拥有的网站。 (因此,无法控制站点代码)

我需要webview来显示网站的桌面版本,并且桌面http标头欺骗不起作用。我发现,由于网站的响应式设计规则,视口大小决定了网站是发送移动设备还是桌面设备。

在我的Pixel XL上,此代码使页面看起来正确:

webview_chart.getSettings().setLoadWithOverviewMode(true);

webview_chart.setInitialScale(200);
 webview_chart.getSettings().setUseWideViewPort(false);
 webview_chart.getSettings().setMinimumFontSize(16); String newUA= "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19";
 webview_chart.getSettings().setUserAgentString(newUA);
 webview_chart.loadUrl("http://tradingview.com/chart");

这里似乎关键的三件事是

  1. WideViewPort必须是假的(或者我得到移动视图)
  2. InitialScale = 200使它在我的设备上显示桌面,但事情看起来很小而且很远。因此:
  3. MinimumFontSize = 16。

现在,这会使我的手机上的所有内容看起来都很好,而屏幕尺寸相似但屏幕较小的其他设备也存在问题。

在我妻子最初的Moto X上,InitialScale 200仍然提供移动网站。将其更改为150并减少字体大小使其在Moto X上看起来很完美,但是在Pixel上,事物太小并且间隔很远,就好像所有的边距都要大。

如何在不同屏幕尺寸下正确显示此webview?我甚至不确定我使用的代码是实现这一壮举的最佳实践。我只是将它一起攻击并发现它能够显示正确大小的桌面视图(Tons of late night trial-and-error)。但事实证明它不适用于其他屏幕尺寸。在处理网站的响应式设计规则时,我可以做些什么来改变这种灵活性,适应性或响应性?

android android-webview responsive-design-view
1个回答
0
投票

您需要设置视口,因为目标网站似乎使用基于视口尺寸的响应式设计,而不是基于HTTP请求标头。这种方法是一种常见的CSS实践。

您可以在这里找到详细的文档:https://developer.android.com/guide/webapps/targeting.html#Viewport

© www.soinside.com 2019 - 2024. All rights reserved.