Android WebView iFrame 字体缩放
Android WebView iFrame font scaling
我有一个应用程序,基本上只是加载一个网站来显示该信息。在网站内,我有一个加载事件日历的 iframe。
在计算机上查看网站(通过 Chrome),活动日历看起来完全符合预期(是的,我知道字体小得离谱)。
通过 Android 应用程序在 FireTV Stick 上查看网站时,iFrame(活动日历)中的字体会放大。
我注意到在 FireTV 上,当分辨率为 1920x1080
时,实际显示分辨率为 960x540
(将浏览缩小到同样的效果)@see Screen Size and Resolution
Chrome 中的图像(正确显示)
FireTV WebView(不正确)
我还阅读了 Font-Boosting ,这最初是我认为的问题所在,但我已经将其删除为 none "disable" 的技术工作(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 开发团队中的任何人愿意发表评论并指出正确的方向,我将不胜感激!
解决这个问题的方法很简单。我只需要将这些值设置为 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");
我有一个应用程序,基本上只是加载一个网站来显示该信息。在网站内,我有一个加载事件日历的 iframe。
在计算机上查看网站(通过 Chrome),活动日历看起来完全符合预期(是的,我知道字体小得离谱)。
通过 Android 应用程序在 FireTV Stick 上查看网站时,iFrame(活动日历)中的字体会放大。
我注意到在 FireTV 上,当分辨率为 1920x1080
时,实际显示分辨率为 960x540
(将浏览缩小到同样的效果)@see Screen Size and Resolution
Chrome 中的图像(正确显示)
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 开发团队中的任何人愿意发表评论并指出正确的方向,我将不胜感激!
解决这个问题的方法很简单。我只需要将这些值设置为 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");