【问题标题】:How to make WebView limit screen size如何使 WebView 限制屏幕大小
【发布时间】:2014-06-16 11:27:18
【问题描述】:

我注意到,任何主要的移动浏览器(chrome、股票浏览器、opera)都可以完美地显示像这个谷歌表单这样的网页,因为用户不能横向滚动但可以垂直滚动。

但是,在我的应用程序的 WebView 中显示了一个更大的窗口,并且可以横向滚动,这是我不想要的。

关于如何做到这一点的任何想法?

编辑: 在弄乱了表单的 html 之后,我意识到如果它检测到屏幕尺寸小于或等于 721 像素,它会将 css 样式表设置为移动版本。所以我猜想我使用的主要浏览器以某种方式“欺骗”网页,使其认为小屏幕设备正在看到它。有人知道怎么做吗?

EDIT2: 我找到了一个相当丑陋的解决方案,方法是在加载完成后将 javascript 注入网页。这是我使用注入的 js 更改的标签: <link href='/static/forms/client/css/1446748018-mobile_formview_ltr.css' type='text/css' rel='stylesheet' media='screen and (max-device-width: 721px)'>

以及我在应用程序中使用的命令:webView.loadUrl("javascript:document.getElementsByTagName('link')[3].media = 'screen and (max-device-width: 5000px)';"); 在这样做时,我将移动 css 样式表应用于网页的最大屏幕宽度设置为高得离谱的值 - 5000 像素。这种方式始终应用移动 CSS。

IMO 这是一个非常草率的解决方案,如果有人有更好的解决方案,请分享

【问题讨论】:

  • 您使用的是哪个版本的 Android?某些版本的 WebView 以物理像素报告某些大小,而不是可能混淆页面的 CSS 像素。
  • 该应用的目标sdk是18。你知道这个版本是否表达了你写的属性吗?
  • 不,它没有。我是在询问您正在测试的手机上的 Android 系统版本(例如 4.4,KitKat)。
  • 哦,抱歉。是的,我正在运行 4.4.2,KitKat。

标签: android user-interface android-webview google-forms


【解决方案1】:

这是因为这些页面有一个移动视口,但 WebView 不会尊重这一点,除非您调用

webSettings.setUseWideViewPort(true);

【讨论】:

  • 不幸的是我试过了,但它只是缩小了。我正在尝试加载移动 CSS 样式表而不是桌面样式表
  • @user3274871 - 你有没有改变过用户代理?
  • 是的,我也试过了,但谷歌表单似乎并不关心用户代理。就像我说的,这一切似乎都取决于屏幕尺寸
  • 参见“EDIT”和“EDIT2”
  • @user3274871 - 您在 wrap_contents 模式下使用的 WebView 是否有机会?如果是,请尝试将其设置为 match_parent。 wrap_contents 也与视口混淆。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
相关资源
最近更新 更多