2014-07-16 16 views
6

einstellt Ich habe viele Frage gefunden, um Schriftart zum webview zu setzen. Ich habe versucht, ich kann nicht beheben kann.wie man Schriftart zur webview

Ich habe 10 html-Datei in meinem Assest-Ordner. In Swipe im eins nach dem anderen im Webview, bis das funktioniert gut, jetzt brauche ich auf Knopfdruck ändern Schriftart von diesem (für alle HTML-Seite, die im Laden von 10 Dateien). Wie kann ich die Schriftart meiner HTML-Anzeige in Webview ändern?

erste Weg

mainContent.getSettings().setJavaScriptEnabled(true); 
      WebSettings webSettings = mainContent.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      webSettings.setBuiltInZoomControls(true); 
      mainContent.requestFocusFromTouch(); 
      mainContent.setWebViewClient(new WebViewClient()); 
      mainContent.setWebChromeClient(new WebChromeClient()); 
      mainContent.loadUrl("file:///android_asset/"+filename.get(position)); 
     Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf"); 
      webSettings.setFixedFontFamily(font); 
      webSettings.setDefaultFontSize(20); 

2. Art und Weise

Ich habe den Inhalt von HTML bekommen, und ich habe in einen String übergeben, kann ich nicht in der Lage, in sie passieren, wenn der Inhalt richtig diese weitergegeben wird funktionieren.

mainContent.getSettings().setJavaScriptEnabled(true); 
      WebSettings webSettings = mainContent.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      webSettings.setBuiltInZoomControls(true); 
      mainContent.requestFocusFromTouch(); 
      mainContent.setWebChromeClient(new WebChromeClient()); 
      mainContent.loadUrl("file:///android_asset/"+filename.get(position)); 
      mainContent.setWebViewClient(new WebViewClient() { 
       @Override 
       public void onPageFinished(WebView view, String url) { 
        super.onPageFinished(view, url); 
        mainContent.setWebViewClient(null);  
      mainContent.loadUrl("javascript:window.HTMLOUT.processHTML('<div>'+document.getElementsByTagName('div')[0].innerHTML+'</div>');"); 
        String pish = "<html><head><style type=\"text/css\">@font-face {font-family: MyFont;src: url(\"file:///android_asset/fonts/Kelvetica.ttf\")}body {font-family: MyFont;font-size: medium;text-align: justify;}</style></head><body>"; 
        String pas = "</body></html>";  
        String myHtmlString = pish + page + pas; // here i can't able to get the `page` 
        mainContent.loadDataWithBaseURL(null,myHtmlString, "text/html", "UTF-8", null); 

und in meiner Tätigkeit

class MyJavaScriptInterface { 
     @SuppressWarnings("unused") 
     public void processHTML(final String html) { 
      runOnUiThread(new Runnable() { 
       public void run() { 
        Spanned page = Html.fromHtml(html); 
        System.out.println("content"+page); 

       } 
      }); 
     } 
    } 

Ich brauche diese page in obigen Code

3. Art und Weise
mainContent.getSettings().setJavaScriptEnabled(true); 
      WebSettings webSettings = mainContent.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      webSettings.setBuiltInZoomControls(true); 
      mainContent.requestFocusFromTouch(); 
      mainContent.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); 
      mainContent.loadUrl("file:///android_asset/"+filename.get(position)); 
      mainContent.setWebViewClient(new WebViewClient() { 
       @Override 
       public void onPageFinished(WebView view, String url) { 
        super.onPageFinished(view, url); 
        mainContent.setWebViewClient(null); 
        mainContent.loadUrl("javascript:(function() { var s=document.createElement('style');s.innerHTML =" 
           + " '@font-face{font-family:ZawGyi-One;src:url('file:///android_asset/fonts/zeroesthree.ttf');}" 
           + "body,div,h1,h2,h3,input,textarea{font-family:ZawGyi-One! important;}';" 
           + "document.getElementsByTagName('head')[0].appendChild(s);document.getElementsByTagName('body')[0].style.fontFamily = \"ZawGyi-One\"})()"); 
       } 
      }); 

ich so versucht haben, zu übergeben. Ich kann den Fonttyp nicht ändern. Jeder hat eine Idee, bitte teilen Sie es. Ich arbeite an diesem Problem seit zwei Tagen. Vielen Dank im Voraus.

Antwort

4

Sie können diese

  1. in zwei Art und Weise tun, wenn Ihr Schaltfläche Teil von HTML ist, dann können Sie
  2. Mit Android-Taste eine JavaScript-Funktion auf Click-Ereignis aufrufen können Sie eine JavaScript-Funktion aufrufen, die Schriftart aktualisieren
  3. Familie

Hier ist Beispiel: CSS font_first.css:

.box_heading{ 
     width:340px; 
     text-align:center; 
     font-family:Arial, Helvetica, sans-serif; 
     color:#000; 
     font-size:20px; 
     font-weight:normal; 
     margin-top:14px; 
     float:left; 
     text-transform:uppercase;}

Html: index.html

Wenn Sie tun dies mit der zweiten Methode werden Sie brauchen nur haben für diese Sie changeFont() von android webview nennen mainContent.loadUrl("javascript:changeFont()")

EDIT
anrufen Wenn ja, können Sie dies versuchen: myWebView.loadUrl("javascript:document.getElementById('navigationText')style.fontFamily ='"+fontName+"');

+0

ich habe eine statische dateien, ich bekomme es von db und zeigt in webview mit position .. –

+0

ich habe versucht sie bearbeiten code .. es funktioniert nicht –

+1

ja es hat funktioniert .. leichte änderung wie diese .. 'mainC ontent.loadUrl ("javascript: document.getElementById ('maindiv'). style.fontFamily = 'courier';"); 'Sie sollten den' fontname' in einfache Anführungszeichen setzen @JaiSoni –

Verwandte Themen