Android自定义复选框以设置自定义字体

3

我创建了一个简单的小部件作为自定义复选框,如下所示的代码,这段代码中设置自定义字体可以正常工作,但我无法选中或取消选中 CheckBox

public class CustomFontCheckBox extends AppCompatCheckBox {

    public CustomFontCheckBox(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
setTypeface(FontManager.getInstance(getContext()).loadFont("fonts/my_font.ttf"));
    }

    public CustomFontCheckBox(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    @SuppressWarnings("unused")
    private void internalInit(Context context, AttributeSet attrs) {

    }
}

XML布局:

<com.myapp.test.Widgets.CustomFontCheckBox
    android:id="@+id/ch1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="@dimen/sickness_depth_marginRight"
    android:button="@null"
    android:buttonTint="@color/colorAccent"
    android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
    android:text="@string/diabetes"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@color/body_text_color"/>
1个回答

3

我认为你在修改它的构造函数和样式,应该像这样使用:

public class CustomFontCheckBox extends AppCompatCheckBox {


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

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

    public CustomFontCheckBox(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }
    private void init(){
        //set your typeface here.
//        setTypeface("");
    }
}

是的,没错,但是我有超过40个复选框,我不喜欢使用这种方法。 - tux-world

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接