【发布时间】:2015-10-17 18:13:11
【问题描述】:
我正在构建一个应用程序,我们正在使用一种名为 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);
}
}
我的意图是我在 xml 中设置为粗体的所有 TextView:
<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());
有人知道吗?
【问题讨论】:
标签: java android xml android-layout