当前位置: 首页 > 知识库问答 >
问题:

Android TypefaceSpan NoSuchMethoderRror for new TypefaceSpan(Typeface)

敖毅
2023-03-14
int id = context.getResources.getIdentifier("xxx","font",packageName);
Typeface typeface = context.getResources.getFont(id);
TypefaceSpan span = new TypefaceSpan(typeface);

nosuchMethodError:类landroid/text/style/typefaceSpan中没有直接方法(landroid/graphics/typeface;)V;或者它的超级类('android.text.style.TypeFaceSpan'的声明出现在/system/framework/framework.jar!classes2.dex中)。

请帮帮忙。提前道谢。

共有1个答案

尉迟阳煦
2023-03-14

我也有同样的问题,这个答案对我有效

您需要创建CustomTypeFaceSpan

import android.graphics.Paint;
import android.graphics.Typeface;
import android.text.TextPaint;
import android.text.style.TypefaceSpan;

public class CustomTypefaceSpan extends TypefaceSpan {

   private final Typeface newType;

   public CustomTypefaceSpan(String family, Typeface type) {
     super(family);
     newType = type;
   }

   @Override
   public void updateDrawState(TextPaint ds) {
     applyCustomTypeFace(ds, newType);
   }

   @Override
   public void updateMeasureState(TextPaint paint) {
     applyCustomTypeFace(paint, newType);
   }

   private static void applyCustomTypeFace(Paint paint, Typeface tf) {
     int oldStyle;
     Typeface old = paint.getTypeface();
     if (old == null) {
       oldStyle = 0;
     } else {
       oldStyle = old.getStyle();
     }

     int fake = oldStyle & ~tf.getStyle();
     if ((fake & Typeface.BOLD) != 0) {
       paint.setFakeBoldText(true);
     }

     if ((fake & Typeface.ITALIC) != 0) {
       paint.setTextSkewX(-0.25f);
     }

     paint.setTypeface(tf);
   }
 }

那就这样用吧

TypeFace face = ResourcesCompat.getFont(context, R.font.font_name); // in case you want to support below API 26.
new CustomTypefaceSpan("", face);
 类似资料:
  • 问题内容: 是否可以检查Android API 8中Typeface对象使用的是哪个家族? 我正在像这样的Paint对象上创建字体 我希望以后能像这样检查家人 这是行不通的,因为它们不是同一对象,我也尝试过,但结果相同。Typeface对象似乎没有提供任何有用的帮助进行家族检测的方法,是否有解决方法?我只需要检测基本的Android字体(SERIF,SANS- SERIF,DEFAULT,MONO

  • 问题内容: 我还没有找到一种方法来做到这一点。可能吗? 问题答案: 好吧,我无法弄清楚如何使用可用的类,因此我自己扩展了它,现在它对我有用。这是我所做的:

  • 主要内容:1.字体的可选风格,2.可选字体对象(Typeface),3.自定义创建字型,4.使用代码示例:,本节示例代码下载:,本节小结:本节带来Paint API系列的最后一个API,Typeface(字型),由字义,我们大概可以猜到,这个 API是用来设置字体以及字体风格的,使用起来也非常的简单!下面我们来学习下Typeface的一些相关 的用法! 官方API文档:Typeface~ 1.字体的可选风格 四个整型常量: BOLD:加粗 ITALIC:斜体 BOLD_ITALIC:粗斜体 NO

  • android.support.v7 上的 AppCompat 小部件似乎存在问题。基本上,我正在使用将XML布局加载到或。然后,我将视图组传递到一个函数中,该函数提取子视图并尝试查看子视图的字体,如果它是文本视图、按钮还是编辑文本。这在Android 5 及更高版本上工作正常。但是,在运行 4.4.4 或更低版本的 Android 设备上,子视图的字体返回 null。为什么小部件会返回空值? 如

  • 以下是字体、字体和字体系列的定义: null 那么我可以将这3个中的哪一个指定为css font-family属性的值呢?如果我只指定字体族,那么如果我指定无衬线字体,那么浏览器将从用户系统中选择哪种无衬线字体来显示内容?用户系统上可能有许多无衬线字体。 先谢谢你,苏伦

  • Typeface-Helper 可以让你很容易地从 Java 代码中定义字体。只要在应用程序的子类中初始化一次,自定义字体就能应用在所有通过 typeface() 静态调用的 View 中。

相关问答

相关文章

相关阅读

相关工具