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));
}
シャドウ機能については、[このリンク][1] を次のコードと一緒に使用しました。
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
updateShadowColor();
}