1

由于 Android 在它的某些视图上缺少一些功能(比如使用不同的字体,或者允许使用 dp 单位设置阴影),我不得不扩展我想要的每个视图并向它们添加一些代码,但是因为有很多,实际上有太多相同的代码。

我怎样才能为我希望支持的每个视图实现最少的代码编写,以便大部分代码都在一个单独的类中?

甚至可以使装饰器附加到其目标视图的特定方法吗?

或者也许我应该添加有关如何使用装饰器的说明,以及在我需要附加到的每个方法上调用哪些函数?

作为代码示例,这是我用于设置字体的代码:

@Override
public void setTypeface(final Typeface tf, final int style) {
    if (isInEditMode()) {
        super.setTypeface(tf, style);
        return;
    }
if((style&Typeface.BOLD)!=0)
    super.setTypeface(FontLoader.getTypeFace(getContext(), FontType.ROBOTO_BOLD));
else 
    super.setTypeface(FontLoader.getTypeFace(getContext(), FontType.ROBOTO_LIGHT));
}

关于阴影功能,我将 [this link][1] 与下一个代码一起使用:

@Override
protected void drawableStateChanged() {
    super.drawableStateChanged();
    updateShadowColor();
}
4

1 回答 1

0

我不确定这对您有帮助,但我使用以下代码能够在 a 上创建自定义日期显示Button(因此它也应该可以在 a 上TextView):

String styledText = "" +
                "<font color='#000000'>" + month + "</font>.<font color='#ffffff'>" + day + "</font>" + 
                "<br />" + 
                "<small><font color='#666666'>" + year + "</font></small>";

Button dateBT = (Button) mi.getActionView();
dateBT.setText(Html.fromHtml(styledText));

它允许您动态地使用 HTML。

于 2013-05-12T09:15:36.907 回答