我已经使用
Typeface font = Typeface.createFromAsset(this.getAssets(),"fonts/Arial.ttf");
在我的 Xml 布局中,我有许多不同字体的文本视图,我想随时以编程方式保留它
尝试了以下
Typeface.DEFAULT
和 Typeface font =null;
所有文本视图都设置为相同的字体,而不是 Xml 中的字体
如何保留字体而无需重新启动我的应用程序?
一个可能的解决方案是使用 TypeFace 类的静态实例。前段时间我在这个线程中提出了一个解决这个问题的方法:从资产中访问一次字体并使用它作为参考。希望对你有帮助。
步骤 1)创建一个类名作为 CustomTextView 并复制粘贴此代码,但确保自定义字体应为 Project Assets 文件夹。所以你可以替换字体名称。
打包 YOUR_PACKAGE;
public class CustomTextView extends TextView{
public CustomButton(Context context) {
super( context );
setFont();
}
public CustomTextView (Context context, AttributeSet attrs) {
super( context, attrs );
setFont();
}
public CustomTextView (Context context, AttributeSet attrs, int defStyle) {
super( context, attrs, defStyle );
setFont();
}
private void setFont() {
Typeface normal = Typeface.createFromAsset(getContext().getAssets(),"fonts/Arial.ttf");
setTypeface( normal, Typeface.NORMAL );
}
}
第2步)
在您的布局中使用此自定义 TextView
<LinearLayout
android:id="@+id/signing_details"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="100" >
<YOUR_PACKAGE.CustomTextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textSize="16sp" />
</ LinearLayout>
您还可以动态使用此 CustomTextView
CustomTextView textView = new CustomTextView (this);
textView.setText(res.getString(R.string.app_name));
textView.setTextColor(Color.parseColor("#000000"));
textView.setTextSize(16);
希望这对您有所帮助。