Я хочу изменить начертание шрифта строки html, загруженной в WebView, аналогично тому, как указано в этом вопросе:
Как изменить начертание шрифта Webview в Android?
Разница в том, что я не использую старый подход, когда вы храните файлы шрифтов в папке с ресурсами, но я сохраняю их в res / font, как описано в документации по поддержке шрифтов Android "Шрифты в XML":
https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html
Теперь я, очевидно, не могу использовать:
file:///android_asset/fonts/my_font.otf
Я пытался:
file:///android_res/font/my_font.otf
и многие другие способы описания пути к моему шрифту внутри папки res / font, но ни один из них не работает.
Как использовать настраиваемое семейство шрифтов для WebView, загружающего строку html, если мой шрифт хранится в папке res / font?
//Редактировать:
Моя текущая реализация, которая не работает:
@BindingAdapter("loadData")
public static void loadData(WebView webView, String htmlData) {
webView.loadDataWithBaseURL(null, htmlData, "text/html", "utf-8", null);
}
@BindingAdapter({"loadData", "fontFamily"})
public static void loadData(WebView webView, String htmlData, @FontRes int fontFamilyId) {
TypedValue value = new TypedValue();
ApplicationActivity.getSharedApplication().getResources().getValue(fontFamilyId, value, true);
String fontPath = value.string.toString();
File fontFile = new File(fontPath);
String prefix = "<html>\n"
+"\t<head>\n"
+"\t\t<style type=\"text/css\">\n"
+"\t\t\t@font-face {\n"
+"\t\t\t\tfont-family: 'CustomFont';\n"
+"\t\t\t\tsrc: url(\"file:///android_res/font/"+fontFile.getName()+"\")\n"
+"\t\t\t}\n"
+"\t\t\tbody {\n"
+"\t\t\t\tfont-family: 'CustomFont';\n"
+"\t\t\t}\n"
+"\t\t</style>\n"
+"\t</head>\n"
+"\t<body>\n";
String postfix = "\t</body>\n</html>";
loadData(webView, prefix + htmlData + postfix);
}