2017-08-08 80 views
9

我有一个应用程序,基本上只是加载一个网站来显示该信息。在网站内我有一个加载事件日历的iframe。Android WebView iFrame字体缩放

在计算机上查看网站(通过Chrome),事件日历看起来应该是它应该的样子(是的,我知道字体是可笑的小)。

通过Android应用程序在FireTV棒上查看网站,iFrame中的字体大小(事件日历)会扩大。

我已经注意到,与FireTV,当分辨率是1920x1080实际显示分辨率为960x540(其缩放浏览下降到将导致相同的效果)在浏览器(显示正确)@see Screen Size and Resolution

图片 Image in Chrome (displays correctly) FireTV的WebView(不正确) FireTV (incorrect) 我也对字体,推进它最初是什么,我认为问题是,但我已经消除了因为没有的技术,“禁用”,它的工作(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: 好吧,我想通了,它不仅是扩大内嵌框架,但它是在FireTV的所有内容(这显然是一个特征)。他们的显示分辨率(dp)是960x540。看起来,没有办法制作1920x1080的东西,但是当我通过Rise Vision的“My Rise Player”应用程序显示iframe时,一切都如常。

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

如果Rise Vision的开发团队中的任何人都愿意评论并指出我朝着正确的方向发展,我将不胜感激!

+1

您是否尝试过使用webSettings.setTextZoom()来避免自动缩放? – altskop

+0

@altskop这绝对是一个正确的方向。我添加了它并将其设置为40(就像现在用于测试的硬编码的东西),并且它校正了一些文本,但不是全部。纠正的文本是使用vh的字体大小。直接使用px的文本没有得到纠正,仍然被放大。任何想法? – Michael

回答

2

解决方法很简单。我只是需要将这些值设置为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");