如何在android中使用`Open Sans`字体样式的textview?

时间:2017-05-18 12:22:02

标签: android xml

如何在android中使用Open Sans字体样式进行textview?默认情况下,font-family Open Sans不可用。

5 个答案:

答案 0 :(得分:4)

使用此库在孔应用Calligraphy

上进行字体更改

使用此代码更改perticuler文本字体。

将字体文件放在您的资源文件夹中。在我的例子中,我创建了一个名为fonts的子目录。

    TextView tv = (TextView) findViewById(R.id.textViewName);
    Typeface face = Typeface.createFromAsset(getAssets(),"fonts/opansans.ttf");
    tv.setTypeface(face);

答案 1 :(得分:3)

Android O和Android支持库26添加了对可下载字体的支持。

Google字体在Google Play服务中提供了字体提供程序。

请阅读官方文档: https://developers.google.com/fonts/docs/android

答案 2 :(得分:1)

enter image description here

  

第1步:创建一个assest文件夹 - > fonts文件夹 - >放置.ttf文件。

     

第2步:创建自定义textview类,如下所示:

public class LotaRegularTextView extends TextView {

    public LotaRegularTextView(Context context) {
        super(context);
        this.setTypeface(Typeface.SERIF);
    }
    public LotaRegularTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.setTypeface(Typeface.SERIF);
    }
    public LotaRegularTextView(Context context, AttributeSet attrs, int 
           defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.setTypeface(Typeface.SERIF);
    }
}
  

第3步:将FontsOverride.class添加到您的包中,此类将默认字体系列替换为您的字体系列

  public final class FontsOverride {

    public static void setDefaultFont(Context context,
            String staticTypefaceFieldName, String fontAssetName) {
        final Typeface regular = Typeface.createFromAsset(context.getAssets(),
                fontAssetName);
        replaceFont(staticTypefaceFieldName, regular);
    }

    protected static void replaceFont(String staticTypefaceFieldName,
            final Typeface newTypeface) {
        try {
            final Field staticField = Typeface.class
                    .getDeclaredField(staticTypefaceFieldName);
            staticField.setAccessible(true);
            staticField.set(null, newTypeface);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
  }
  

步骤4:在create方法的应用程序类中写入行。      取代" serif"字体系列的字体

FontsOverride.setDefaultFont(this, "SERIF", "fonts/Lato-Regular.ttf");
  

步骤5:如何使用下面的自定义textview类

 <com.example.widget.LotaRegularTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="@dimen/padding10"
        android:text="Ashish"
        android:textColor="@color/gini_gray_color_7d7d7d"
        android:textSize="@dimen/s_common_a"/>

答案 3 :(得分:0)

您可以检查答案https://stackoverflow.com/a/3651168/6792992 您可以使用与答案suggesests相同的方式使用任何类型的字体

答案 4 :(得分:0)

您必须添加自定义字体。首先下载字体存档.ttf,在你的情况下可以找到:https://www.fontsquirrel.com/fonts/open-sans一旦你拥有它我建议你这个教程添加自定义字体:https://futurestud.io/tutorials/custom-fonts-on-android-using-font-styles