Как использовать несколько стилей шрифтов в моем приложении? - PullRequest
0 голосов
/ 04 октября 2018

В моем проекте я хочу использовать шрифт Monsterrat для своего приложения. На некоторых экранах я хочу использовать курсив Monsterrat, среду Monsterat.Я хочу объявить один раз и использовать их во всем приложении.Я не понимаю, как я могу это сделать.

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Первый способ:

Поместите ваши шрифты в каталог res / font и создайте два стиля.В этом примере я также установил цвет текста и размер текста:

<style name="FirstStyle" parent="Theme.AppCompat.Light.NoActionBar" >
    <item name="android:fontFamily">@font/md_grotesk_regular</item>
    <item name="fontFamily">@font/md_grotesk_regular</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">@dimen/font_12</item>
</style>

Затем объявите тему android: для каждого действия в вашем манифесте следующим образом:

<activity
    android:name=".SomeActivity"
    android:theme="@style/FirstStyle" />

Это установитвыбранный стиль для всего текста, определенного в упражнении.

Второй способ:

Посмотрите на ответ @Sandeep Parish и создайте два пользовательских textView, каждый со своим собственным стилем, размером, цвета и т. д. Вызовите, чтобы настроить каждый TextView, чтобы иметь два стиля в одном макете (но это не очень хорошая практика, за исключением некоторых типов макетов)

0 голосов
/ 04 октября 2018

Используйте папку assets в res, чтобы использовать различные типы шрифтов в вашем приложении.Добавьте файлы ttf в ресурсы и продолжайте ..

0 голосов
/ 04 октября 2018

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

В вашем классе xml

                     <your.class.path.RubikMediumTextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Your Text"/>

и java есть и измените шрифт на Typeface face= Typeface.createFromAsset(context.getAssets(), "font/rubik_medium.ttf");

import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;

public class RubikMediumTextView extends TextView {

    Typeface font;
    public RubikMediumTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context);
    }

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

    public RubikMediumTextView(Context context) {
        super(context);
        init(context);
    }

    public void init(Context context) {

        int currentapiVersion = android.os.Build.VERSION.SDK_INT;
        if (currentapiVersion >=
                android.os.Build.VERSION_CODES.KITKAT) {
            if (!isInEditMode()) {
                Typeface face= Typeface.createFromAsset(context.getAssets(), "font/rubik_medium.ttf");
                setTypeface(face);
            }
        }else{
            if (!isInEditMode()) {
                Typeface face= Typeface.createFromAsset(context.getAssets(), "font/rubik_medium.ttf");
                setTypeface(face);
            }
        }
    }

}

...