为国读书 2016-06-24 15:53 采纳率: 33.3%
浏览 2275

webview自定义字体显示不出来

webview自定义字体显示不出来,颜色、字体大小、背景什么的都能获得,就这个font-family获取不了,请问是什么原因呢?谢谢啊!先上主要代码:

 public class MainActivity extends BaseActivity {
    Context context;
    WebView webview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context = getApplicationContext();
        setContentView(R.layout.main);
        findViews();
        init();
        webview.loadUrl("http://192.168.3.4:8080/resource/jsp/test.html"); 
    }


    private void findViews(){
        webview = (WebView)findViewById(R.id.webview);
    }

    private void init(){
        webview.getSettings().setJavaScriptEnabled(true); //可用JS
        webview.setBackgroundColor(Color.WHITE);
        webview.getSettings().setDefaultTextEncodingName("UTF-8");
        webview.canGoBackOrForward(1);
        webview.setWebChromeClient(new WebChromeClient());
        webview.setWebViewClient(new WebViewClient(){

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // TODO Auto-generated method stub
                super.onPageStarted(view, url, favicon);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                // TODO Auto-generated method stub
                super.onPageFinished(view, url);
                injectCSS();
            }

        });
    }

    private void injectCSS() {
        handler.post(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                try {
                    InputStream inputStream = getAssets().open("style.css");
                    byte[] buffer = new byte[inputStream.available()];
                    inputStream.read(buffer);
                    inputStream.close();
                    String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);
                    String js = "javascript:(function() {" +
                            "var parent = document.getElementsByTagName('head').item(0);" +
                            "var style = document.createElement('style');" +
                            "style.type = 'text/css';" +
                            "style.innerHTML = window.atob('" + encoded + "');" +
                            "parent.appendChild(style)" +
                            "})()";
                    webview.loadUrl(js);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

测试页面test.html

 <html>
<head>
</head>
<body id="main">
    <a class="agname" href="#">这里是测试页面</a><br/>
</body>
</html>

安卓工程目录assets下面放了两个文件,分别是style.css和yzxy.ttf,yzxy.ttf是字体;style.css的代码如下:

 @font-face {
    font-family: typeface;
    src: url("file:///android_asset/fzxy.ttf")
}
.agname {
    font-family: typeface;
    font-size: 30px;
    color:red;
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办
    • ¥15 kylin启动报错log4j类冲突
    • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
    • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序