Я разрабатываю приложение для виджетов Android, предназначенное для пользователей выше Lollipop (Android 5.0).

Мне приходится использовать шрифт под названием "noto sans"(https://www.google. com/get/noto/#/) в моем приложении по некоторым причинам.

Я слышал, что он содержится в Lollipop, но я не знаю, как использовать его в xml.

Кто-нибудь знает об этом?

3
steve 2 Апр 2015 в 10:39

2 ответа

Нет, вы не можете использовать пользовательские шрифты в файле макета (XML). Вы должны использовать пользовательские шрифты программно, как показано ниже.

String fontPath = "fonts/calibrib.ttf";

          // Loading Font Face
          Typeface tf = Typeface.createFromAsset(mContext.getAssets(), fontPath);

TextView txtView = new TextView(this);
txtView.setTypeface(tf);

Поместите свой шрифт в папку с ресурсами. Вот для чего работает приведенный выше код.

enter image description here

0
Jibran Khan 2 Апр 2015 в 10:43

Вы можете создать свой собственный TextView, переопределив TextView следующим образом, вам нужно поместить шрифт в папку с ресурсами:

public class MyTextView extends TextView {

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

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

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

    private void setType(Context context){
        this.setTypeface(Typeface.createFromAsset(context.getAssets(),
                    "foo.ttf"));

        this.setShadowLayer(1.5f, 5, 5, getContext().getResources().getColor(R.color.black_shadow));
    }
}

И используйте это так:

<com.your.project.package.MyTextView
        android:id="@+id/oppinfo_mtv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"  
        android:text="Player 1"
        />
0
A.S. 2 Апр 2015 в 10:45