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中)。
请帮帮忙。提前道谢。
我也有同样的问题,这个答案对我有效
您需要创建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 中。