gpt4 book ai didi

android - 如何向字体 TextView 类添加多种字体?

转载 作者:行者123 更新时间:2023-12-02 10:47:36 25 4
gpt4 key购买 nike

我有一个关于向 TextView 添加多种自定义字体的问题。我基本上已经在 fonts 文件夹中添加了字体,并根据我在网上找到的解决方案为 fonttextview 创建了一个 java 类。但是我看到他们只添加了一种字体,我想添加多种字体,例如 roboto-regular、roboto-bold、cabin-bold 等。这是我到目前为止的代码:

public class FontTextView extends TextView {


public FontTextView(Context context) {
super(context);
Typeface face=Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Bold.ttf");
this.setTypeface(face);

}

public FontTextView(Context context, AttributeSet attrs) {
super(context, attrs);
Typeface face=Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Bold.ttf");
this.setTypeface(face);
}

public FontTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
Typeface face=Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Bold.ttf");
this.setTypeface(face);
}

我该如何创建多种字体?另外,我尝试了 styleable 等,但它显示错误,因为它不支持 styleable 类,任何人都可以向此现有代码添加另一种字体并引导我完成检索过程吗?

谢谢!贾斯汀

最佳答案

使用以下代码为 xml 文件设置不同的字体。

public class CustomTextView extends TextView {
private static final String TAG = "CustomTextView";

public CustomTextView(Context context) {
super(context);
}

public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setCustomFont(context, attrs);
}

public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setCustomFont(context, attrs);
}

private void setCustomFont(Context ctx, AttributeSet attrs) {
TypedArray a = ctx.obtainStyledAttributes(attrs,R.styleable.CustomTextView);
String customFont = a.getString(R.styleable.CustomTextView_customFont);
setCustomFont(ctx, customFont);
a.recycle();
}

public boolean setCustomFont(Context ctx, String asset) {
Typeface tf = null;
try {
tf = Typeface.createFromAsset(ctx.getAssets(), "fonts/"+asset);
} catch (Exception e) {
Log.e(TAG, "Could not get typeface: "+e.getMessage());
return false;
}

setTypeface(tf);
return true;
}

}

在 xml 文件中,您可以将其用作:

<com.package_name.CustomTextView
your_name:customFont="arialbd.ttf" />

并在主父布局中添加

xmlns:your_name="http://schemas.android.com/apk/res/com.package_name"

并记住在values文件夹中添加一个attrs.xml,其中包含以下资源

<resources>
<declare-styleable name="CustomTextView">
<attr name="customFont" format="string"/>
</declare-styleable>

希望对你有帮助

关于android - 如何向字体 TextView 类添加多种字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16837469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com