在Android Studio 2.3.3中添加字体

时间:2017-10-27 13:31:16

标签: android android-studio fonts

像标题所说的那样,我需要使用新的字体。我目前使用的是Android Studio 2.3.3。

我有一个文件 .ttf(一个字体文件),我想在res目录(/ res / font)中添加这个字体。

我看到了其他问题,但似乎情况有所不同,因为很多人都使用Android Studio 3.0。

那么,对我们这些穷人来说,这是正确的过程吗?

2 个答案:

答案 0 :(得分:1)

1.在fonts目录中创建一个新的assets目录,并将your.ttf字体文件放在此处。

2.您可以更改为此。

TextView tv = (TextView) findViewById(R.id.tv);
Typeface tf = Typeface.createFromAsset(v.getContext().getAssets(), "fonts/your.ttf");
tv.setTypeface(tf);

修改

您还可以在xml代码中使用android:typeface="sans"android:typeface="serif"android:typeface="monospace"

在xml代码中使用android:fontFamily

从android 4.1 / 4.2 / 5.0开始,可以使用以下Roboto字体系列:

android:fontFamily="sans-serif"           // roboto regular
android:fontFamily="sans-serif-light"     // roboto light
android:fontFamily="sans-serif-condensed" // roboto condensed
android:fontFamily="sans-serif-black"     // roboto black
android:fontFamily="sans-serif-thin"      // roboto thin (android 4.2)
android:fontFamily="sans-serif-medium"    // roboto medium (android 5.0)

也可以使用风格

fonts.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="font_family_light">sans-serif-light</string>
    <string name="font_family_medium">sans-serif-medium</string>
    <string name="font_family_regular">sans-serif</string>
    <string name="font_family_condensed">sans-serif-condensed</string>
    <string name="font_family_black">sans-serif-black</string>
    <string name="font_family_thin">sans-serif-thin</string>
</resources>

答案 1 :(得分:1)

您可以使用CustomTextView

public class CustomTextView extends TextView {

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
    init(attrs);
}

public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(attrs);
}

public CustomTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(attrs);
}
public CustomTextView(Context context) {
    super(context);
    init(null);
}

private void init(AttributeSet attrs) {
    if (attrs != null) {
        TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.CustomTextView);
        String fontName = a.getString(R.styleable.CustomTextView_font);
        try {
            if (fontName != null) {
                Typeface myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/" + fontName);
                setTypeface(myTypeface);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        a.recycle();
    }
}

}

您需要在值文件夹

中创建一个attrs
<resources>
<declare-styleable name="CustomTextView">
    <attr name="font" format="string" />
</declare-styleable>

用于xml中的textview

<com.packagename.view.CustomTextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="14dp"
    android:textColor="#313131"
    android:textAllCaps="true"
    android:text="Title"
    android:textSize="12sp"
    app:font="@string/monte_semibold"
    />

您在xml中提到的字体名称应该在assets / fonts / folder

中可用