所以最近我试图通过在清单文件中设置android:targetSdkVersion="23"
来构建我的Android 6应用程序,一切顺利,但后来我注意到了webview的奇怪行为。
在我的应用程序中,我首先使用webview.LoadData (someHtmlContent, "text/html; charset=UTF-8", null);
将一些内容加载到webview中,然后用户可以通过使用应用程序菜单中的某些按钮来更改文本大小。这些按钮的工作方式如下:
webview.LoadUrl ("javascript:" + "document.getElementsByTagName(\"body\")[0].style.fontSize = \"" + size + "%\";");
size
是一个字符串,可以是100%
(初始大小)到110%
,120%
和......
此方法有效地将JavaScript注入现有内容(HTML),并在Android 5及更低版本上完美运行,但在Android 6上无法运行。
在Android 6中,当用户点击一个注入JS的按钮时,只需用size
变量替换 webview的内容。
有人可以帮忙吗?
答案 0 :(得分:1)
我不知道为什么LoadUrl
webview
方法不起作用,但我刚刚发现了应该用于Android 4.4的新方法EvaluateJavascript
而且。我刚用我的应用程序(Android 6)测试了它,它运行正常。
因此,应该使用以下代码:(我使用C#/ Xamarin)
if ((int)Build.VERSION.SdkInt >= 19)
{
webview.EvaluateJavascript ("document.getElementsByTagName(\"body\")[0].style.fontSize = \"" + size + "%\";", null);
}
else
{
webview.LoadUrl ("javascript:" + "document.getElementsByTagName(\"body\")[0].style.fontSize = \"" + size + "%\";");
}