Android WebView iFrame字体缩放

时间:2017-08-08 14:05:43

标签: android iframe android-webview amazon-fire-tv

我有一个应用程序,基本上只是加载一个网站来显示该信息。在网站中我有一个加载事件日历的iframe。

在计算机上查看网站(通过Chrome),事件日历看起来完全按照应有的方式显示(是的,我知道字体非常小)。

通过Android应用在FireTV Stick上观看网站,iFrame(活动日历)中的字体大小会逐渐扩大。

我注意到,使用FireTV时,当分辨率为1920x1080时,实际显示分辨率为960x540(将浏览缩小到会导致同样的效果)@see Screen Size and Resolution

Chrome中的图片(正确显示) Image in Chrome (displays correctly) FireTV WebView(不正确) FireTV (incorrect) 我还阅读了 Font-Boosting ,这是我认为最初的问题,但我已经消除了这一点,因为没有“禁用”它的技术(html * {max-height: 99999999px}等) ...)

我觉得好像问题在于我在Android应用程序中调用WebView的方式以及正在应用的设置。我几乎可以肯定我错过了那些可以解决这个问题的东西。以下是我对WebView设置的了解:

mWebView = (WebView) findViewById(R.id.activity_main_webview);
WebSettings webSettings = mWebView.getSettings();

webSettings.setJavaScriptEnabled(true);
webSettings.setMediaPlaybackRequiresUserGesture(false);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setSupportZoom(true);
webSettings.setDefaultFontSize(12);
mWebView.setInitialScale(1);

编辑1: 好吧,我发现不仅iFrame正在扩展,而且它是FireTV上的所有内容(这显然是一个功能)。它们的显示分辨率(dp)为960x540。似乎没有办法制作1920x1080的东西,但是当我通过Rise Vision的“My Rise Player”应用程序显示iframe时,一切看起来都很正常。

他们是如何找到一种方法在FireTV上显示1920x1080的内容?

如果Rise Vision开发团队的任何人都愿意发表评论并指出我正确的方向,我将非常感激!

1 个答案:

答案 0 :(得分:3)

对此的解决方案相当简单。我只需要将这些值设置为100

mWebView.getSettings.setTextZoom(100);
mWebView.setInitialScale(100);

感谢@altskop让我朝着正确的方向前进

对于那些想知道其余代码的人,请转到:

WebView mWebView = (WebView) findViewById(R.id.activity_main_webview);
WebSettings webSettings = mWebView.getSettings();

mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        Log.d(TAG, "Finished Loading.");
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
});

webSettings.setJavaScriptEnabled(true);
webSettings.setMediaPlaybackRequiresUserGesture(false);
webSettings.setTextZoom(100);

mWebView.setInitialScale(100);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.loadUrl("http://your.url.com");