Как изменить шрифт Button после его добавления в ViewGroup? - PullRequest
0 голосов
/ 27 ноября 2018

Учитывая Button, созданное во время выполнения:

Button button = Button(context)

Способ установки пользовательской гарнитуры:

button.setTypeface(myTypeface)

Однако я считаю, что он работает только до Я добавляю его в ViewGroup, а не после .

Я также пытался:

button.setTypeface(myTypeface, myStyle) 

, но он тоже не работал.Мне нужно динамически изменить мой Button шрифт.Я пробовал invalidate() и requestLayout(), но шрифт никогда не меняется.

1 Ответ

0 голосов
/ 27 ноября 2018

Решение: - вы можете создать подкласс класса Button с вашим собственным шрифтом и использовать его вместо кнопки.

public class MyButton extends AppCompatButton {

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

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

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

    private void init() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "font.ttf");
            setTypeface(tf);
        }
    }
}
...