Изменить шрифт текста рядом с переключателем?

Чтобы изменить шрифт textView, который я использовал

TextView tv = (TextView) findViewById(R.id.textview);
Typeface font = Typeface.createFromAsset(getAssets(), "SF_Cartoonist_Hand_Bold.ttf");
tv.setTypeface(font);

Я хочу сделать что-то подобное для текста рядом с кнопкой "Радио", как я могу это сделать?

Ответ 1

Вы устанавливаете шрифт в текст рядом с RadioButton же, как и с TextView:

RadioButton rb  = (RadioButton) findViewById(R.id.radiobutton);
Typeface font = Typeface.createFromAsset(getAssets(), "SF_Cartoonist_Hand_Bold.ttf");
rb.setTypeface(font);

Ответ 3

Мне лично нравится управлять стилем вне вашего фрагмента или активности. Следующий класс CustomRadioButton должен позаботиться об этом.

XML-макет:

<com.company.package.ui.CustomRadioButton
    android:id="@+id/radioBtnAge"
    style="@style/RadioButton.One"
    app:fontName="SF-Pro-Text-Medium.otf"/>

Класс CustomRadioButton:

package com.company.package.ui;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Typeface;
import android.util.AttributeSet;

public class CustomRadioButton extends android.support.v7.widget.AppCompatRadioButton {
    public CustomRadioButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(attrs);
    }

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

    }

    public CustomRadioButton(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_fontName);

        if (fontName == null || fontName.isEmpty()) {
            fontName = FontCacheHelper.DEFAULT_FONT_NAME;
        }

        Typeface myTypeface = FontCacheHelper.getInstance().getAppFont(getContext(), fontName);
        setTypeface(myTypeface);
        a.recycle();
    }
}
}

FontCacheHelper для эффективного управления шрифтами (ссылка: https://slothdevelopers.wordpress.com/2014/05/11/custom-fonts-in-textview-and-fontcache/)

package com.company.package.util;

import android.content.Context;
import android.graphics.Typeface;
import android.support.annotation.NonNull;

import java.util.HashMap;
import java.util.Map;

public class FontCacheHelper {
    private static final String FEATURE_FONT_PATH = "Fonts/";
    private static final String APP_FONT_PATH = "Fonts/App/";
    public static final String DEFAULT_FONT_NAME = "SF-Pro-Text-Medium.otf";
    private static FontCacheHelper fontCacheHelper;
    private Map<String, Typeface> fontMap = new HashMap<>();

    public static FontCacheHelper getInstance() {
        if (fontCacheHelper == null) {
            fontCacheHelper = new FontCacheHelper();
        }
        return fontCacheHelper;
    }

    public
    @NonNull
    Typeface getAppFont(@NonNull Context context, @NonNull String fontName) {
        String fontPath = getAppFontFilePath(fontName); 
        return getFontByPath(context, fontPath);
    }

    public
    @NonNull
    Typeface getFeatureFont(@NonNull Context context, @NonNull String fontName) {
        String fontPath = getFeatureFontFilePath(fontName);
        return getFontByPath(context, fontPath);
    }

    public
    @NonNull
    Typeface getFontByPath(@NonNull Context context, @NonNull String fontPath) {
        if (fontMap.containsKey(fontPath)) {
            return fontMap.get(fontPath);
        } else {
            Typeface typeface;
            if (fontPath.isEmpty()) {
                typeface = Typeface.DEFAULT;
            } else {
                typeface = Typeface.createFromAsset(context.getAssets(), fontPath);
                if (typeface == null) {
                    typeface = Typeface.DEFAULT;
                }
            }
            fontMap.put(fontPath, typeface);
            return typeface;
        }
    }

    public
    @NonNull
    String getDefaultFontFilePath() {
        return APP_FONT_PATH + DEFAULT_FONT_NAME;
    }

    private
    @NonNull
    String getAppFontFilePath(@NonNull String fontName) {
        return APP_FONT_PATH + fontName;
    }

    private
    @NonNull
    String getFeatureFontFilePath(@NonNull String fontName) {
        return FEATURE_FONT_PATH + fontName;
    }

    public
    @NonNull
    String getFontName(@NonNull Typeface typeface) {
        for (Map.Entry<String, Typeface> entry : fontMap.entrySet()) {
            if (entry.getValue().equals(typeface)) {
                return entry.getKey();
            }
        }
        return "";
    }
}