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