如何在Android中设置自定义不同的字体样式

时间:2015-11-14 04:42:06

标签: java android xml

  

我想设置不同的字体样式我的'按钮'文本和'编辑文本框'文本,如New Roman,Calibri,Cambria和Georgia。我如何设置不同的字体,例如我想将我的登录按钮文本更改为Calibri字体。我不知道如何设置或导入MS Office或Font文件中的字体。请建议我,谢谢..

     

我的XML代码

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="   User Name  " />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="   Password  " 
        android:fontFamily="Tekton Pro Ext"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="Tekton Pro Ext"
        android:text="   Login  " />
</LinearLayout>
  

布局

enter image description here

3 个答案:

答案 0 :(得分:3)

您需要在项目的资源文件夹下创建字体文件夹,并将TTF放入其中,在主要或活动中,您可以将字体设置为

primary-expression

答案 1 :(得分:1)

也许最好看一下这篇文章,这些文章准确回答了你的想法:

1- How to change fontFamily of TextView in Android

2- How to change the font on the TextView?

总之,你必须做这样的事情: 将字体放在/ fonts目录中的assets文件夹中,然后使用以下代码行:

Button bt = (Button) findViewById(R.id.myButton);
Typeface face = Typeface.createFromAsset(getAssets(),
            "fonts/epimodem.ttf");
bt.setTypeface(face);

答案 2 :(得分:0)

以上所有答案都是正确的。如果您想在整个应用中使用不同字体的ButtonTextView,请执行以下操作。

public class FontsArePriceyTextView extends TextView {

    public MyTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setCostlyFont();
    }

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setCostlyFont();
    }

    public MyTextView(Context context) {
        super(context);
        setCostlyFont();
    }

    private void setCostlyFont() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "filenameofyourfont.ttf");
            setTypeface(tf);
        }
    }
}

然后在您的布局中,将TextView替换为yourpackagename.FontsArePriceyTextView。例如

<com.company.projectname.widgets.FontsArePriceyTextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Your awesome stylised text" />

你应该好好去。