我遇到的问题是特定于Android 5.0(包括5.0.1/5.0.2)的手机和我的平板电脑(Nexus 9).早期版本的Android工作正常.
在我的应用程序中,我想设置一个覆盖所有文本的全局字体.我在5.0之前完成此操作的方法是使用此方法.这种字体覆盖方法似乎不适用于我尝试过但在2.x和4.x中完美运行的任何版本的Lollipop.我也在这段代码运行在一个BaseApplication
类我有这样的字体是唯一的初始化onCreate()
我的BaseApplication
.
这似乎是开发人员预览版中的一个错误并在此处报告.我尝试了在第16篇文章中建议的修复,使用TTX工具将您的字体文件转换为.ttx并返回到.otf,但这似乎没有像其他人那样解决问题.我还验证了我的.otf字体文件是有效的,并且没有根据OTS清理工具损坏.
我还有一个自定义TextView,我可以通过布局设置字体.一个例子是:
<com.myapp.widgets.CustomTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Testing text view font"
myapp:fontName="my-font.otf" />
Run Code Online (Sandbox Code Playgroud)
此CustomTextView setTypeface(typeFace)
在视图的初始化中用于设置字体.这适用于5.0,但实际上并不是我可以使用的解决方案,因为我需要遍历每个布局并更改TextView,EditText等以使用CustomTextView,并且无法使用Dialog文本枯萎.
因此,使用我的CustomTextView类设置单个TextView的字体在所有Android版本中都可以正常工作,而不是全局设置.
我还查看了样式源代码,看看我是否能找到Material和Holo主题之间的任何差异,但似乎没有什么会改变它android:typeface
.我最初的想法是,Material主题在某种程度上覆盖android:typeface
了我的应用主题的属性,但我无法找到任何东西.
任何想法或意见将不胜感激,谢谢!