Android向けのカスタムビューのdeclare-styleable属性を設定する方法
属性集合を定義するには declare-styleable タグを使用し、レイアウトファイルでそれらの属性を使用しなければならないカスタムビューの属性を設定します。
属性集合は、res/valuesディレクトリ内のattrs.xmlファイルで最初に定義します。たとえば、次のようになります。
<resources>
<declare-styleable name="MyCustomView">
<attr name="textColor" format="color" />
<attr name="textSize" format="dimension" />
<attr name="showIcon" format="boolean" />
</declare-styleable>
</resources>
在这个例子中,我们定义了一个名为MyCustomView的属性集合,并添加了三个属性:textColor、textSize和showIcon。
そして、カスタムビューのレイアウトファイルで、これらの属性が利用できます。例えば:
<com.example.MyCustomView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:textColor="@android:color/black"
app:textSize="16sp"
app:showIcon="true" />
この例では、MyCustomViewというカスタムビューを使用しており、textColor、textSize、showIconという3つのプロパティの値を設定しています。
最後に、カスタムビューのコード内で、obtainStyledAttributesメソッドを使用してこれらの属性の値を取得することができます。例えば、
public class MyCustomView extends View {
private int textColor;
private float textSize;
private boolean showIcon;
public MyCustomView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView);
textColor = typedArray.getColor(R.styleable.MyCustomView_textColor, Color.BLACK);
textSize = typedArray.getDimension(R.styleable.MyCustomView_textSize, 16);
showIcon = typedArray.getBoolean(R.styleable.MyCustomView_showIcon, false);
typedArray.recycle();
}
}
この例では、obtainStyledAttributesメソッドでtextColor、textSize、showIcon属性の値を取得し、対応するメンバ変数に保存します。
TypedArrayオブジェクトを取得したらrecycleメソッドを呼び出してTypedArrayオブジェクトを解放し、メモリリークを防ぐように注意してください。