如何使用新功能"decorate" textView(以及扩展它的类)?



由于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();
}

我不确定这是否可以帮助您,但我使用以下代码能够在Button上创建自定义日期显示(因此它也应该可以在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));

最新更新