2

現在、私は1つのプロジェクトのサポートに取り組み始めましたが、そこで1つの非常に興味深いトリックを見つけました。これは、CustomViewの完全なクラス名をxmlに記述しない機会を与え、かなり汚いように見えると思います。

このトリックを実装するための手順は次のとおりです。

1)android.viewプロジェクトで独自のパッケージを作成します。

2)作成してパッケージCustomTextView extends TextViewに入れます。android.view

3)他のAndroidと同じようにXMLで使用するview

 <CustomTextView
  android:angle="90"
  android:endColor="#efa600"
  android:paddingLeft="0dp"
  android:startColor="#ffe396"
  android:text=""
  android:textSize="24dp"
  android:textStyle="bold" />

4)カスタムの代わりに標準のAndroid属性を使用します:

public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    int[] ids = new int[attrs.getAttributeCount()];
    for (int i = 0; i < attrs.getAttributeCount(); i++) {
        ids[i] = attrs.getAttributeNameResource(i);
    }

    TypedArray a = context.obtainStyledAttributes(attrs, ids, defStyle, 0);

    for (int i = 0; i < attrs.getAttributeCount(); i++) {
        String attrName = attrs.getAttributeName(i);
        if (attrName == null)
            continue;

        if (attrName.equals("startColor")) {
            mStartColor = a.getColor(i, -1);
        } else if (attrName.equals("endColor")) {
            mEndColor = a.getColor(i, -1);
        } else if (attrName.equals("angle")) {
            mAngle = a.getFloat(i, 0);
        }
    }
    a.recycle();
}

そのような方法は安全ですか、それとも問題を引き起こす可能性がありますか?

4

1 に答える 1

1

それは可能ですが、私はあなた自身のスタイルを使うことをお勧めします。

これらは有効なスタイラブルではないため、インフレータによって無視された場合、将来削除された場合にどうなるかわかりません。

控えめに言っても、カスタムスタイルを使用するだけで安心できます。

言うまでもなく、はるかにクリーンなコードです。

于 2013-01-22T15:08:50.533 に答える