2017-12-29 14 views
0

내 응용 프로그램은 Support Library 27.0.2을 통해 Android 다운로드 글꼴을 사용하여 API Guide on Android Developers에 따라 XML에 사용자 지정 글꼴을 설정합니다. 각 폰트 패밀리가 처음으로 그려지는 경우를 제외하고 폰트는 정상적으로 적용됩니다.다운로드 가능한 글꼴이 정확하게 캐싱되지 않음

예를 들어

: 나는 ActivityA을 열 경우, 그 Toolbar 내 사용자 정의 글꼴을 사용합니다 Tab1 기본 Roboto로와 제목,하지만 Tab2Tab3 표시됩니다. 응용 프로그램을 닫지 않고 두 번째로 ActivityA을 열면 문제가 발생하지 않고 모든 탭에서 사용자 지정 글꼴을 사용합니다. 탭 제목 외에도 툴바에서 문제가 발견되었습니다. 첫 번째 여는 후 글꼴이 올바르게 적용됩니다.

res/values/font_certs.xmlres/font/font.xml 파일은 안드로이드 스튜디오에 의해 생성 그냥 문서에서 제공하는 것과 같다되었다 :

<application ...> 
    <meta-data 
     android:name="preloaded_fonts" 
     android:resource="@array/preloaded_fonts" /> 
</application> 

그리고 res/values/arrays.xml :

<resources> 
    <array name="preloaded_fonts"> 
     <item>@font/lato</item> 
     <item>@font/lato_bold</item> 
     <item>@font/lato_light</item> 
     <item>@font/raleway</item> 
     <item>@font/raleway_semibold</item> 
    </array> 
</resources> 
다음

<font-family xmlns:app="http://schemas.android.com/apk/res-auto" 
    app:fontProviderAuthority="com.google.android.gms.fonts" 
    app:fontProviderCerts="@array/com_google_android_gms_fonts_certs" 
    app:fontProviderPackage="com.google.android.gms" 
    app:fontProviderQuery="Lato" /> 

매니페스트의

글꼴이 적용됩니다. AppBarLayout에서 다음 테마를 사용 :

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" > 
    <item name="android:fontFamily">@font/raleway</item> 
    <item name="android:gravity">center_horizontal</item> 
</style> 

프로젝트는 다음과 같은 버전을 사용 문제는 API 21과 27는 것 같다 진정한 넥서스 6P 실행 API상의 AVD 사용하여 재현

minSdkVersion = 19 
targetSdkVersion = 26 
compileSdkVersion = 26 
buildToolsVersion = '27.0.0' 
playServicesVersion = '11.6.0' 

글꼴 캐시에 문제가 있습니다. 문제를 해결하거나 더 잘 조사하려면 어떻게해야합니까?

+0

아마도 도움이 될 것입니다. https://medium.com/@romainguy/androids-font-renderer-c368bbde87d9 – Danieboy

답변

0

지금까지 오프라인 글꼴을 사용하는 것 외에이 문제를 해결할 방법을 찾지 못했습니다. 이 경우 font.xml 개의 파일을 Google 글꼴에서 다운로드 한 font.ttf 개의 파일로 대체하고 매니페스트의 preloaded_fonts 메타 태그를 삭제했습니다. 이로 인해 APK 크기가 약 200KB 증가했습니다 (5 글 꼴).