Android webview 사용자 정의 글꼴 사용
3037 단어 android
최근 항목 에 필요 한 것 이 있 습 니 다. app 과 webview 는 사용자 정의 글꼴 을 통일 적 으로 사용 해 야 합 니 다.
1: 앱 의 기본 글꼴 수정
1. my font. ttf 를 assets / fonts 디 렉 터 리 에 두 기
2. 캘 리 그래 피 설정
dependencies {
compile
'uk.co.chrisjenx:calligraphy:1.2.0'
}
githut 주소:https://github.com/chrisjenx/Calligraphy
2. 있다 BaseApplication extends Application 의 onCreate 방법 중
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/myfont.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
3. BaseActivity 에서 attachBaseContext 를 다시 쓰 는 방법 protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
2: 웹 뷰 의 웹 페이지 글꼴 수정:1. 로 컬 웹 페이지 에 대해 asset 디 렉 터 리 에 글꼴 파일 을 놓 고 css 에 다음 내용 을 추가 하여 글꼴 face 를 사용자 정의 하고 필요 한 곳 에 이 글꼴 face 를 사용 하면 됩 니 다.
@font-face {
font-family: 'MyCustomFont';
src: url('file:///android_asset/fonts/myfont.ttf');
}
body{
font-family:"MyCustomFont";
}
2. 온라인 웹 페이지 에 대해 서 는 서버 에 글꼴 파일 을 두 고 같은 방식 으로 글꼴 face 를 정의 하여 모든 곳 에 적용 해 야 합 니 다.
웹 페이지 나 서버 쪽 의 작업 을 줄 이기 위해 서 는 로 컬 주입 방식 으로 font - face 의 css 를 주입 하고 전체 웹 페이지 를 스타일 로 바 꿀 수 있 습 니 다.
웹 뷰 에 웹 뷰 클 라 이언 트 를 사용자 정의 하고 다시 쓰기
onPageFinish
하 며 다음 과 같은 내용 을 추가 합 니 다.public void onPageFinished(WebView view, String url) {
injectCSS();
view.loadUrl("javascript:!function(){" +
"s=document.createElement('style');s.innerHTML="
+ "\"@font-face{font-family:myhyqh;src:url('****/fonts/myfont.ttf');}*{font-family:myhyqh !important;}\";"
+ "document.getElementsByTagName('head')[0].appendChild(s);" +
"document.getElementsByTagName('body')[0].style.fontFamily = \"myhyqh\";}()");
super.onPageFinished(view, url);
}
****/fonts/myfont.ttf // * :shouldInterceptRequest
vwebview 를 다시 쓰 는 shouldInterceptRequest 방법:public WebResourceResponse shouldInterceptRequest(WebView view,
String url) {
WebResourceResponse response = super.shouldInterceptRequest(view, url);
Log.i("webview","load intercept request:" + url);
if (url != null && url.contains("myfont.ttf")) {
String assertPath ="fonts/myfont.ttf";
try {
response = new WebResourceResponse("application/x-font-ttf","UTF8", getAssets().open(assertPath));
} catch (IOException e) {
e.printStackTrace();
}
}
return response;
}
이렇게 하면 웹 페이지 가 새 글꼴 에 의 해 다시 렌 더 링 되 어 목적 을 달성 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.