2015-02-10 25 views
-1

我有一個加載了HTML數據的webview。我希望能夠在運行時更改HTML的字體。爲此我有一個用戶可以選擇字體的設置(字體取自/ system/fonts目錄)。Android - 動態更改webview自定義字體

font selector

我如何申請所選字體的網頁流量?

我想這通過使用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); 
} 

隨着在HTML的javascript定義changeStyle():

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

這一點,但是,不能正常工作。我很確定changeStyle()js-function沒有問題,因爲它正在設置字體大小或顏色。

回答

0

不使用的setAttribute來改變風格:https://stackoverflow.com/a/6065647/3556874

您可以設置樣式字體這樣

myList[0].style.font = FontStyle; 

,並以這種形式傳遞風格的changeStyle funtion,FontStyle="italic bold 22px arial,serif";或任何你字體也許

+0

這並不能解釋如何將系統字體應用到web視圖。例如Arial不是系統字體之一。如果我把roboto作爲字體,沒有任何反應。 – Skywalker10 2015-02-10 11:17:17

+0

如何使用自定義字體是一個不同的問題!這個答案解釋瞭如何動態地正確應用字體..如果你想學習如何使用自定義字體閱讀這個http://www.w3schools.com/cssref/css3_pr_font-face_rule.asp,或者你可以包含相應的字體文件你的項目。 – 2015-02-10 11:31:09