【问题标题】:Android fontFamily sans-serif-lightAndroid fontFamily sans-serif-light
【发布时间】:2014-09-23 07:34:41
【问题描述】:

我需要一些关于 android 的 sans-serif-light 字体的说明。下面这行代码

<item name="android:fontFamily">sans-serif-light</item>

在自定义样式中,如果 minSdkVersion 小于 16,&lt;style name="custom_style"/&gt; 会给出错误。

但相同的属性直接在文本视图上

android:fontFamily="sans-serif-light" 

如果 minSdkVersion 小于 16,则发出 警告。

Q1 这两种方法有什么区别?

Q2 如果我直接在 textview 中设置属性(第二种方式),应用程序是否与 16 以下的 sdk 版本和默认字体兼容?

(我只有一台装有 android 4.4.4 的设备,它在这两种方式上都很好用)

【问题讨论】:

    标签: android android-layout font-family


    【解决方案1】:

    如果我直接在 textview 中设置属性(第二种方式) 应用程序与 16 以下的 sdk 版本兼容,默认为 字体?

    即使您在样式中设置了字体系列,行为也不应该改变。差异可能是由于您的 Lint 设置造成的。

    【讨论】:

    • 这就是逻辑所说的,行为不应该改变!但是,当我以第二种方式构建应用程序时,它成功地在我的设备上运行,与第一种方式相反,结果是构建失败。第一种方法适用于 sdk
    • 如果我在你身边,我会检查 Lint 设置,看看是否存在某种不一致。如果您没有发现任何错误,您可以通过&lt;item name="android:fontFamily" tools:ignore="NewApi" 抑制错误,这样您可以抑制错误并在具有 sdk 的设备中进行测试
    • 复制那个。我会检查棉绒并在某个时候回来
    【解决方案2】:

    正如黑带所说,这一定是由于棉绒设置的不同。

    San-serif light font 将不在低于 API 16 的设备中工作。要解决此问题,您需要在资产中上传自定义字体(.ttf 文件)文件。


    这是怎么做的-

    首先将 san-serif light font .ttf 文件复制到您的资产文件夹,您可以从 here 下载该文件夹。该文件将包含许多字体,但您只需要 san-serif light 文件。

    然后在您的代码中执行此操作 -

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

    【讨论】:

    • 感谢您的努力!我知道如何设置字体,我知道它在 16 岁以下无法使用。如果你能帮助我解决 2 个子问题,那就太好了。
    • 尝试在问题视图中检查您的错误。这应该给你一个提示。如果您在 lint 错误中没有找到它,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    相关资源
    最近更新 更多