2017-08-08 119 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");