2014-07-16 25 views
6

Ben webview.I için yazı tipi ayarlamak için birçok soru bulduk denedim.webview yazı tipini ayarlamak için nasıl

En yakın klasörümde 10 html dosyası var. Swipe im'de webview'de birer birer görüntüleniyor, bu kadar işe yaramazsa, şimdi butona tıklamanız gerekiyor. Bunun için font tipini değiştirmem gerekiyor (10 dosya yüklüyorsun tüm html sayfaları için). Web görünümünde görüntülenen html'nin yazı tipi türünü nasıl değiştirebilirim?

1 yolu

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); 

içeriği doğru bu geçtiyseniz

Ben html içeriği almak var ve bir dizeye geçti, ben mümkün değildir, bunun içine geçmesine yapabilirsiniz 2 yolu çalışacak.

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); 

ve Etkinliğime

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); 

       } 
      }); 
     } 
    } 

yılında

i böyle çalıştık

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\"})()"); 
       } 
      }); 

3 yol, yukarıda koduna bu page geçmesi gerekiyor. Yazı tipini değiştiremiyorum. Herhangi bir fikriniz varsa lütfen paylaşın. Son iki gündür bu problem üzerinde çalışıyorum. Önceden teşekkürler. Düğmeniz o zaman yazı güncelleyecek bir JavaScript işlevi çağırabilir Android düğmesini kullanarak click olayı

  • bir JavaScript işlevini çağırabilirsiniz html parçasıysa

  • cevap

    4

    İki arada

    1. yapabilirsiniz 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;}
      İşte

    aile örnektir

    Html: myWebView.loadUrl("javascript:document.getElementById('navigationText')style.fontFamily ='"+fontName+"');: index.html

    size sadece bu yüzden bu deneyebilirsiniz Eğer mainContent.loadUrl("javascript:changeFont()")

    DÜZENLEME
    aramak zorunda bunun için android Web görünümündeki gelen changeFont() aramaya gerek ikinci yöntemi ile yapıyorsanız

    +0

    Statik bir dosyam var, db'den alıyorum ve pozisyonu kullanarak web görünümünde gösteriyorum .. –

    +0

    kodunuzu değiştirmeyi denedim .. çalışmadı –

    +1

    evet işe yaradı .. bu gibi hafif bir değişiklik .. 'mainC ontent.loadUrl ("javascript: document.getElementById ('maindiv'). style.fontFamily = 'kurye';"); 'tek tırnak içinde @ fonti yazılmalıdır @JaiSoni –

    İlgili konular