2013-07-16 182 views
0

我想開發一個簡單的android web瀏覽器應用程序,它支持我提供的Unicode字體。我做了一些研究,但我找不到一個成功的方法來爲android WebView添加自定義字體。有一些解決方案爲WebView添加自定義字體,但它們都基於在CSS中添加字體。但由於我無法控制WebView內部加載的頁面,因此有一種方法可以直接將字體添加到WebView,如setTypaFace()方法TextView爲android webview添加自定義字體

這裏是到目前爲止,我已經用來添加自定義字體的網頁視圖代碼:

package com.example.sinhalafontrendering; 

import android.app.Activity; 
import android.graphics.Typeface; 
import android.os.Bundle; 
import android.view.Menu; 
import android.webkit.WebView; 
import android.widget.TextView; 

import com.example.sinhalafontrendering.R.id; 

public class MainActivity extends Activity { 
    WebView mWebView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     FontUtils.setCustomFont(findViewById(id.txtHelloWorld), getAssets()); 
     Typeface tf = Typeface.createFromAsset(getAssets(), "iskpota.ttf"); 
     TextView tv = (TextView) findViewById(id.txtHelloWorld); 
     tv.setText("ශ්‍රී ලංකා, \n "); 
     //tv.setTypeface(tf,0); 

     String html = "<html><head><style type=\"text/css\">@font-face { font-family: MyCustomFont; src: url(\"Bamini.eot\") /* EOT file for IE */}@font-face { font-family: MyCustomFont; src: url(\"file:///android_asset/iskpota.ttf\") /* TTF file for CSS3 browsers */}body { font-family: MyCustomFont, Verdana, Arial, sans-serif;font-size: medium;color: black}</style></head><body><LI><a href=\"http://www.thelastrow.lk/\">ශ්‍රී ලංකා;</a></LI></UL></div></body></html>"; 

     mWebView = (WebView) findViewById(R.id.webGoogle); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.getSettings().setBuiltInZoomControls(true); 
     mWebView.getSettings().setSupportZoom(true); 
     //mWebView.loadUrl("file:///android_asset/a.html"); 
     mWebView.loadDataWithBaseURL("www.thelastrow.lk", html, "text/html", "UTF-8", null); 
     mWebView.setWebViewClient(new HelloWebViewClient()); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 
+0

你無法添加CSS? – KOTIOS

+0

我沒有任何訪問我想要在'WebView'內加載的網站。它應該像一個簡單的瀏覽器窗口。但我不知道我是否可以爲我在「WebView」中加載的網站添加「CSS」。 – Sajirupee

+0

我的意思是說你有誰使用加載方法將數據加載到webview?如果是的話,你可以添加CSS內部webview以及自定義字體 – KOTIOS

回答

0

它曾與loadDataWithBaseURL!

在這個例子中,我改變了CSS來:

@font-face { 
    font-family: 'feast'; 
    src: url('fonts/feasfbrg.ttf'); 
} 

body {font-family: 'feast';} 

然後用資產路徑爲基準網址:

loadDataWithBaseURL("www.google.com",myhtml,"text/html","utf-8",null); 
+0

試試這個代碼 – KOTIOS

+0

所以我在哪裏可以添加。像_www.google.com_這樣的自定義網址,用我添加的字體加載該網站。 – Sajirupee

+0

它仍然沒有加載我設置的網址de網絡視圖。你可以請張貼完整的例子... – Sajirupee