1

我已经使用

Typeface font = Typeface.createFromAsset(this.getAssets(),"fonts/Arial.ttf"); 

在我的 Xml 布局中,我有许多不同字体的文本视图,我想随时以编程方式保留它

尝试了以下

Typeface.DEFAULT 

Typeface font =null;

所有文本视图都设置为相同的字体,而不是 Xml 中的字体

如何保留字体而无需重新启动我的应用程序?

4

2 回答 2

1

一个可能的解决方案是使用 TypeFace 类的静态实例。前段时间我在这个线程中提出了一个解决这个问题的方法:从资产中访问一次字体并使用它作为参考。希望对你有帮助。

于 2013-10-21T06:54:12.190 回答
0

步骤 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);

希望这对您有所帮助。

于 2013-10-21T06:54:40.823 回答