如何使用新功能“装饰”textView(以及扩展它的类)?

时间:2013-05-12 09:01:50

标签: android fonts decorator textview shadow

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

1 个答案:

答案 0 :(得分:0)

我不确定这可以为您提供帮助,但我使用以下代码才能在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));

它允许您动态使用HTML。