【问题标题】:Best way to assign font typeface to textview将字体字体分配给 textview 的最佳方法
【发布时间】:2015-04-07 17:25:12
【问题描述】:

我想知道将字体分配给 TextView 视图的最佳方式是什么?是创建一个扩展 TextView 的自定义 TextView 类还是使用 setTypeFace 属性更好?

【问题讨论】:

    标签: android textview android-custom-view android-fonts android-typeface


    【解决方案1】:

    创建文件夹 assets(src/main/assets/ in AndroidStudio) 并创建一个子文件夹 fonts ,将你的字体复制到其中

     Typeface tf = Typeface.createFromAsset(getAssets(),
        "fonts/youi.ttf");
     TextView tv = (TextView) findViewById(R.id.edit_t);
     tv.setTypeface(tf);
    

    【讨论】:

    • 我知道这一点。考虑我有一个 ListView 项目 xml 文件,并且里面有 TextViews。我想为每个 TextView 使用自定义字体,我是否应该将字体作为输入发送到自定义适配器类,以便我可以使用您提到的代码来分配它?
    • 是的,在 getView() 中分配字体。
    • 如果我有不止一种字体类型,我应该发送字体列表吗?这是最好和最简单的方法吗?
    • 请注意createFromAsset 存在一个已知问题。它不是维护它的引用,而是在每次调用它时尝试重新创建字体。如果您打算经常使用它,您可能应该缓存它。
    【解决方案2】:

    这是这个的 kotlin 版本

    val openSansLight: Typeface by lazy { Typeface.createFromAsset(context, "font/os_light.ttf"); }
    textView.typeface = openSansLight
    

    【讨论】:

      【解决方案3】:

      字体现在是应用资源的一部分!您现在可以使用字体系列属性来更改 xml 中的字体。创建字体资源目录,可以放字体文件。

      android:fontFamily="@font/lobster"
      

      使用代码

      val typeface = resources.getFont(R.font.myfont)
      textView.typeface = typeface
      

      更多信息请参考official documentation

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-23
        • 1970-01-01
        • 1970-01-01
        • 2020-06-21
        • 2015-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多