将Button字体添加到ViewGroup后如何更改?

时间:2018-11-27 05:12:21

标签: android android-button android-styles android-fonts android-typeface

给出在运行时创建的Button

Button button = Button(context)

设置自定义字体的方法是:

button.setTypeface(myTypeface)

但是我发现它仅在之前有效,我将其添加到ViewGroup,而不是之后

我也尝试过:

button.setTypeface(myTypeface, myStyle) 

但是它也不起作用。我需要动态更改Button字体。我已经尝试过invalidate()requestLayout(),但是字体从未改变。

1 个答案:

答案 0 :(得分:2)

解决方案:-您可以使用自定义字体对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);
        }
    }
}