我知道在Android应用程序中以编程方式设置自定义字体。 有没有办法为自定义字体(资产)加载字体,Android框架将使用基于粗体,斜体等的正确文件?
例如,现在我正在尝试将Roboto字体设置为某些TextView
Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/Roboto/Roboto-Regular.ttf");
textView.setTypeface(typeface);
一切正常。但是,由于我将xml布局中的TextView
设置为粗体,因此文本不会加粗
<TextView
android:id="@+id/my_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="50dp"
android:textStyle="bold"
android:gravity="center"
android:text="@string/my_text"
android:textColor="@color/my_foreground"
android:textSize="24dp" />
如何正确地从资产中加载字体,这将起作用?
textView.setTypeface(typeface, Typeface.BOLD);
在我的资产目录中,只有一个“字体系列”
Roboto-Black.ttf
Roboto-BlackItalic.ttf
Roboto-Bold.ttf
Roboto-BoldCondensed.ttf
Roboto-BoldCondensedItalic.ttf
Roboto-BoldItalic.ttf
Roboto-Condensed.ttf
Roboto-CondensedItalic.ttf
Roboto-Italic.ttf
Roboto-Light.ttf
Roboto-LightItalic.ttf
Roboto-Medium.ttf
Roboto-MediumItalic.ttf
Roboto-Regular.ttf
Roboto-Thin.ttf
Roboto-ThinItalic.ttf
如何在一个字体/系列中加载所有字体?
答案 0 :(得分:3)
不确定发布链接是否是一个好主意,但无论如何...... 这是我关于这个主题的博客文章,它有一个完全解决这个问题的类。 http://anton.averin.pro/2012/09/12/how-to-use-android-roboto-font-in-honeycomb-and-earlier-versions/
答案 1 :(得分:2)
我不知道将单个字体的不同字体变体视为一个系列的方法,但字体往往具有较大的文件大小,因此您可能不希望将所有这些字体导入到您的应用程序中。相反,您可以只使用Medium字体,然后为其设置粗体和斜体属性。
例如,如果您在XML布局中设置了android:textStyle =“bold”,则可以在代码中执行此操作以保持粗体样式:
Typeface currentTypeFace = textView.getTypeface();
if (currentTypeFace != null && currentTypeFace.getStyle() == Typeface.BOLD) {
textView.setTypeface(tf, Typeface.BOLD);
} else {
textView.setTypeface(tf);
}