我需要一些关于android的sans-serif-light字体的澄清。以下代码行
<item name="android:fontFamily">sans-serif-light</item>
自定义样式中的如果minSdkVersion小于16,则<style name="custom_style"/>
会出现 错误 。
但直接在textview上使用相同的属性
android:fontFamily="sans-serif-light"
如果minSdkVersion小于16,则提供 警告 。
Q1两种方法有什么区别?
Q2如果我直接在textview(第二路)设置属性,应用程序是否与16以下的sdk版本兼容,使用默认字体?
(我只有一个装有android 4.4.4的设备,并且两种方式都很好用)
答案 0 :(得分:1)
如果我直接在textview(第二路)中设置属性,那么 应用程序与默认情况下16以下的sdk版本兼容 字体?
即使您在样式中设置字体系列,行为也不应更改。差异可能是由于你的Lint设置。
答案 1 :(得分:0)
正如blackbelt所说,这必定是由于lint设置的不同。
San-serif light字体将 NOT 在API 16以下的设备中工作。要解决此问题,您需要在资产中上传自定义字体(.ttf文件)文件。
以下是如何操作 -
首先将san-serif light字体.ttf文件复制到您可以从here下载的资源文件夹中。该文件将包含许多字体,但您只需要san-serif光文件。
然后在你的代码中,执行此操作 -
Typeface light = Typeface.createFromAsset(getContext().getAssets(), "san-serif-light.ttf");
//Make sure that the font file's name is actually san-serif-light
然后你可以用这种方式将它设置为textview -
textview.setTypeface(light);