我有一些小部件,我正在尝试为它们设置自定义字体。这是我简单的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
。我该如何解决这个问题?
答案 0 :(得分:0)
您正在使用属性的名称而不是可样式的名称。它应该是这样的:
context.obtainStyledAttributes(attrs, R.styleable.MDButton, defStyleAttr, 0);