2017-03-13 2 views
0

Ich habe ein Problem mit HTML bekam: Ich habe eine benutzerdefinierte Schriftart in einer Webansicht verwenden möchten, aber es doesnt't mithilfe dieser Code die Schriftart ändern:Schriftart ändern WebView Android Studio

public void loadHTLMContentText(String text, WebView view) { 

    String body; 
    String head = "<head><style type=\"text/css\">\n" + 
      "@font-face {\n" + 
      " font-family: Bamini;\n" + 
      " src: url(\"Bamini.ttf\")\n" + 
      "}\n" + 
      "body {\n" + 
      " font-family: Bamini;\n" + 
      " font-size: medium;\n" + 
      " text-align: justify;\n" + 
      "}\n" + 
      "</style></head>"; 
    if (text != null) { 
     body = text; 
    } else return; 
    String htmlData = "<html>" + head + "<body style=\"font-family: bamini\">" + body + "</body></html>"; 


    view.loadData(htmlData, "text/html; charset=utf-8", "utf-8"); 
    view.setBackgroundColor(0x00000000); 

} 

Die ttf-Datei befindet sich im selben Ordner wie die .java.

layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     HTMLPre preparer = new HTMLPre(); 


     View one = layoutInflater.inflate(R.layout.slide_type_a, container, false); 


     WebView header_1_a = (WebView) one.findViewById(R.id.header_slide_type_a_1); 
     preparer.loadHTLMContentHeader(getString(R.string.Historie1_header),header_1_a); 

Irgendwelche Vorschläge?

Antwort

2

Die ttf-Datei im selben Ordner wie die .java

Das aus zwei Gründen sinnlos ist:

  • Android nicht verwendet in der Regel zufällige Dateien neben der Java Klassen

  • WebView weiß nichts davon, jedenfalls

Erstellen Sie ein Verzeichnis src/main/assets/ (vorausgesetzt, Sie arbeiten in einem typischen Android Studio-Projekt). Legen Sie Ihre Schriftdateien dort hin. Verwenden Sie loadDataWithBaseURL() und verwenden Sie file:///android_asset/ als die URL. Dann hoffe auf das Beste.

+0

Also der Unterschied zwischen loadData und loadDataWithBaseURL ist, dass ich den Pfad der Assets übertrage? Also ich denke, das wird mein Problem lösen, weil die Schriftart nicht gefunden wurde. Ich werde es später versuchen. – LJulz

+1

@LJulz: Der Unterschied zwischen 'loadData()' und 'loadDataWithBaseURL()' besteht darin, dass Sie relative Pfade wie '' Bamini.ttf'' in Ihrem HTML verwenden können. Sie müssen dann die Schriftart an einen Ort verschieben, für den Sie eine URL angeben können. Ich gehe davon aus, dass es das Ziel ist, die Fonts mit Ihrer App zu packen, und 'assets /', zusammen mit 'file: /// android_asset /', ist die richtige Kombination für 'WebView'. – CommonsWare

+0

Wow du hast mir sehr geholfen, Danke! – LJulz

Verwandte Themen