小部件的android自定义字体属性

时间:2015-08-01 19:38:06

标签: android

我有一些小部件,我正在尝试为它们设置自定义字体。这是我简单的xml ui:

xmlns:app="http://schemas.android.com/apk/res-auto">
<ir.pishguy.makumarket.app.Libraries.internal.MDButton
    app:mdbutton_font="bnazanin"/>
</ir.pishguy.makumarket.app.Libraries.internal.MDButton>

这是我的属性:

<declare-styleable name="MDButton">
    <attr name="mdbutton_font">
        <enum name="consolas"    value="0"/>
        <enum name="times"  value="1"/>
    </attr>
</declare-styleable>

这是我的自定义MDButton类:

public MDButton(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MDButton_mdbutton_font);
    String str = a.getString(R.styleable.MDButton_mdbutton_font);
    switch (Integer.parseInt(str)) {
        case 0:
            str = "fonts/consolas.ttf";
            break;
        case 1:
            str = "fonts/times.ttf";
            break;
    }
    setTypeface(FontManager.getInstance(context).loadFont(str));
}

我在R.styleable.MDButton_mdbutton_font中收到此错误:

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MDButton_mdbutton_font,defStyleAttr,0);

错误:

Error:(37, 73) error: incompatible types: int cannot be converted to int[]

并将其更改为:

new int[]{R.styleable.MDButton_mdbutton_font}

NULL获得str。如何在Web中设置自定义字体文档。我没有看到有关此问题的任何文档,在所有文档中,我都没有看到int[]使用R.styleable.MDButton_mdbutton_font。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您正在使用属性的名称而不是可样式的名称。它应该是这样的:

context.obtainStyledAttributes(attrs, R.styleable.MDButton, defStyleAttr, 0);