gpt4 book ai didi

java - 使用 xml 属性和自定义字体将 TextView 设置为粗体(不工作)

转载 作者:搜寻专家 更新时间:2023-11-01 08:42:05 25 4
gpt4 key购买 nike

我正在构建一个应用程序,我们正在使用一种名为 Apercu 的自定义字体,您可能听说过。不管怎样,我构建了一个实用程序来帮助我在所有元素上设置字体。

这是该实用程序中的一种方法的样子(我也有在 ViewGroup 上设置此字体的方法,我在其中循环遍历所有元素):

public static void setApercuOnTextView(final TextView view, final Context context) {
Typeface tmpTypeface = apercu;
Typeface tmpTypefaceBold = apercuBold;

if (tmpTypeface == null && tmpTypefaceBold == null) {
apercu = Typeface.createFromAsset(context.getAssets(), "fonts/Apercu.otf");
apercuBold = Typeface.createFromAsset(context.getAssets(), "fonts/Apercu-Bold.otf");
}


if (view.getTypeface() == Typeface.DEFAULT_BOLD) {
view.setTypeface(apercuBold, Typeface.BOLD);
} else if (((TextView) view).getTypeface() == Typeface.DEFAULT) {
view.setTypeface(apercu);
}

}

我的 Intent 是我在 xml 中设置为粗体的所有 TextViews:

<TextView
android:id="@+id/name_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="bold" />

但是,当我稍后在代码中运行时:

TextView name = (TextView) findViewById(R.id.name_textview);
Fonthelper.setApercuOnTextView(name, getActivity());

它不会进入我尝试获取所有粗体字体的 if 语句...我也尝试过使用 Typeface.BOLD,但无论如何它都不会进入该 if 语句。

我目前的自定义解决方案是这样做的:

TextView name = (TextView) findViewById(R.id.name_textview);
name.setTypeface(null,Typeface.BOLD);
Fonthelper.setApercuOnTextView(name, getActivity());

有没有人对此有任何线索?

最佳答案

怎么样: 确保你确定view.getTypeface()不是 null ...当我超过android:textStyle="bold"时没有Typeface被发现了。

if (view.getTypeface() == null) {
Log.e(this.class.getName(), "No textStyle defined in xml");
// handle?
}
if (view.getTypeface().isBold()) {
view.setTypeface(apercuBold, Typeface.BOLD);
} else if (((TextView) view).getTypeface() == Typeface.DEFAULT) {
view.setTypeface(apercu);
}

关于java - 使用 xml 属性和自定义字体将 TextView 设置为粗体(不工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31655134/

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