現在、私は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();
}
そのような方法は安全ですか、それとも問題を引き起こす可能性がありますか?