如何在Android中改变WebView的字体?

如何在Android中改变WebView的字体?

我希望将webview的默认字体更改为自定义字体。我正在使用webview为Android开发一个双语浏览器应用程序。

我尝试通过在资产中放置自定义字体来获取自定义字体的实例。但仍然不能将webview的默认字体设置为我的字体。

这就是我试过的:

Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf");
 private WebView webview;WebSettings webSettings = webView.getSettings();
 webSettings.setFixedFontFamily(font);

有人能纠正这种情况或建议其他方法将webview的默认字体更改为自定义字体吗?

谢谢!



catspeake
浏览 398回答 3
3回答

萧十郎

这里有一个有用的例子这个项目..归根结底是:在你的assets/fonts文件夹中,放置所需的OTF或TTF字体(此处是MyFent.otf)创建一个HTML文件,用于WebView的内容,在assets文件夹(这里在里面)assets/demo/my_page.html):<html><head><style&nbsp;type="text/css">@font-face&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;font-family:&nbsp;MyFont; &nbsp;&nbsp;&nbsp;&nbsp;src:&nbsp;url("file:///android_asset/fonts/MyFont.otf")}body&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;font-family:&nbsp;MyFont; &nbsp;&nbsp;&nbsp;&nbsp;font-size:&nbsp;medium; &nbsp;&nbsp;&nbsp;&nbsp;text-align:&nbsp;justify;}</style></head><body>Your&nbsp;text&nbsp;can&nbsp;go&nbsp;here!&nbsp;Your&nbsp;text&nbsp;can&nbsp;go&nbsp;here!&nbsp;Your&nbsp;text&nbsp;can&nbsp;go&nbsp;here!</body></html>从代码中将HTML加载到WebView中:webview.loadUrl("file:///android_asset/demo/my_page.html");注意,通过loadData()是不允许的。根据文件:请注意,JavaScript的相同来源策略意味着在使用此方法加载的页面中运行的脚本将无法访问使用“Data”以外的任何方案加载的内容,包括“http(S)”。要避免这一限制,请使用loadDataWithBaseURL()和适当的基本URL。正如@JaakL在下面的注释中所建议的,为了从字符串中加载HTML,您应该提供指向您的资产的基本URL:webView.loadDataWithBaseURL("file:///android_asset/",&nbsp;htmlData);中引用字体时htmlData,然后您可以简单地使用/fonts/MyFont.otf(省略基URL)。

胡子哥哥

更简单的是,您可以使用AssetURL格式引用字体。不需要编程!@font-face&nbsp;{ &nbsp;&nbsp;&nbsp;font-family:&nbsp;'myface'; &nbsp;&nbsp;&nbsp;src:&nbsp;url('file:///android_asset/fonts/myfont.ttf');&nbsp;}&nbsp;body&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;font-family:&nbsp;'myface',&nbsp;serif;
打开App,查看更多内容
随时随地看视频慕课网APP