Webview更改字体? _android

时间:2011-12-16 04:40:46

标签: android fonts webview

我不知道如何更改Webview的字体。

现在下载应用的html和css样式以其他方式更改字体?

另外,我希望网站实时更改字体。

我该怎么做。

-------------我的来源------

public class WebviewActivity extends Activity {
    /** Called when the activity is first created. */
    TextView tx;
    String html;
    WebView webview;
    WebSettings webset;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        webview=(WebView)findViewById(R.id.webView1);
        html="http://naver.com";

        webview.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                html=DownloadHtml(url);
                webview.loadDataWithBaseURL(null, getHtmlData(WebviewActivity.this,html) , "text/html", "UTF-8", "about:blank");  

                return super.shouldOverrideUrlLoading(view, url);
            }
        });
        copyFile(this.getBaseContext(), "aa.TTF"); 
        webset=webview.getSettings();
        webset.setJavaScriptEnabled(true);

        webview.loadUrl(html);
        } 
    private boolean copyFile(Context context,String fileName) { 
        boolean status = false; 
        try {  
            FileOutputStream out = context.openFileOutput(fileName, Context.MODE_PRIVATE); 
            InputStream in = context.getAssets().open(fileName); 
            // Transfer bytes from the input file to the output file 
            byte[] buf = new byte[1024]; 
            int len; 
            while ((len = in.read(buf)) > 0) { 
                out.write(buf, 0, len); 
            } 
            // Close the streams 
            out.close(); 
            in.close(); 
            status = true; 
        } catch (Exception e) { 
            System.out.println("Exception in copyFile:: "+e.getMessage()); 
            status = false; 
        } 
        System.out.println("copyFile Status:: "+status); 
        return status; 
    }
    private String getHtmlData(Context context, String data){ 
        String head = "<head><style>@font-face {font-family: 'aa';src: url('file://"+ context.getFilesDir().getAbsolutePath()+ "/aa.TTF');}body {font-family: 'aa';}</style></head>"; 
        String htmlData= "<html>"+head+"<body>"+data+"</body></html>" ; 
        return htmlData; 
     } 

    String DownloadHtml(String addr) {
        HttpGet httpget = new HttpGet(addr);
        DefaultHttpClient client = new DefaultHttpClient();
        StringBuilder html = new StringBuilder();
        try {
            HttpResponse response = client.execute(httpget);
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    response.getEntity().getContent()));
            for (;;) {
                String line = br.readLine();
                if (line == null)
                    break;
                html.append(line + '\n');
            }
            br.close();
        } catch (Exception e) {
            ;
        }
        return html.toString();
    }
}

2 个答案:

答案 0 :(得分:2)

如果不更改网页内容,则无法更改字体。

WebView基本上是一个显示网页的视图 网页可能是静态的(例如html)或动态的。但它并没有改变网页的外观和感觉。所以它将显示与网页完全相同的文本。如果您需要更改字体,则必须在网页中更改它(可能是html)。

请查看What is WebVIew

答案 1 :(得分:0)

// Put your font file in assets

private WebView wv;

wv = (WebView)findViewById(R.id.wv);
wv.setBackgroundColor(Color.BLACK);

String my_text=getData("I am android developer");

wv.loadDataWithBaseURL("file:///android_asset//Gill Sans MT.ttf", t, "text/html", "UTF-8", "null" );

private String getData(String s){

    String htmlData="<font color='white'>" + s + "</font>";
     String PAGE_HTML =
            "<html>\n" +
            "  <style type=\"text/css\"> \n" + 
            "   @font-face { \n" + 
            "       font-family: MyFont; \n" + 
            "       src: url(\"file:///android_asset/Gill Sans MT.ttf\") \n" + 
            "   } \n" + 
            "   body { \n" + 
            "       font-family: MyFont; \n" + 
            "       font-size: medium; \n" + 
            "       text-align: justify; \n" + 
            "   } \n" + 
            "  </style> \n" + 
            "  <body>\n" + 
            "    "+htmlData+"<br>\n" + 

            "  </body>\n" + 
            "</html>";

    return PAGE_HTML;

}