2015-02-10 3 views
-1

У меня есть веб-просмотр, загруженный данными HTML. Я хочу иметь возможность изменять шрифт HTML во время выполнения. Для этого у меня есть параметр, где пользователь может выбрать шрифт (шрифты берутся из каталога/system/fonts).Android - Изменение пользовательских шрифтов веб-поиска динамически

font selector

Как применить выбранный шрифт в WebView?

Я попытался это с помощью JavaScript:

String fontString = "font-family: 'myFont'; url: /system/fonts/DroidSans.ttf;"; 
if (android.os.Build.VERSION.SDK_INT < 19) { 
    webview.loadUrl("javascript:changeStyle('body', '" + fontString + "')"); 
} else { 
    webview.evaluateJavascript("javascript:changeStyle('body', '" + fontString + "')", null); 
} 

С changeStyle(), определенной в JavaScript HTML, в:

function changeStyle(tag, style) { 
    var myList = document.getElementsByTagName(tag); // get all p elements 
    var x = myList.length; 
    myList[0].setAttribute("style", style); 
} 

Это, однако, не работает. Я уверен, что нет ничего плохого в jS-функции changeStyle(), поскольку она работает для установки размера шрифта или цвета.

ответ

0

Dont использовать SetAttribute изменить стиль: https://stackoverflow.com/a/6065647/3556874

Вы можете задать стиль для шрифта, как этот

myList[0].style.font = FontStyle; 

и передать стиль в этом формате в changeStyle Funtion, FontStyle="italic bold 22px arial,serif"; или что вы шрифта возможно

+0

Это не объясняет, как применять системные шрифты к веб-просмотру. Например, Arial не является одним из системных шрифтов. Если я поместил roboto в качестве шрифта, ничего не произойдет. – Skywalker10

+0

Как использовать пользовательские шрифты - это другой вопрос !! Этот ответ объясняет, как правильно применять шрифт динамически. Если вы хотите узнать, как использовать пользовательские шрифты, прочитайте это http://www.w3schools.com/cssref/css3_pr_font-face_rule.asp, или вы можете включить соответствующий файл шрифта в ваш проект. –

Смежные вопросы