1

カスタム ビューでは、AttributeSet からカスタム attrs 値を取得できます (以下を参照)。しかし、どうすれば Android 属性を取得できますか? たとえば、 android:background または android:text にアクセスするにはどうすればよいですか? android.R.styleable は許可されていません。

<mine.custom.RangeSeekBar
    custom:selectedMinValue="2"
    custom:selectedMaxValue="4"
    android:background="@drawable/my_skin" />


public RangeSeekBar(Context context, AttributeSet attrs, int defStyle) {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RangeSeekBar, defStyle, 0);
    selectedMinValue = a.getInt(R.styleable.RangeSeekBar_selectedMinValue, selectedMinValue);
    selectedMaxValue = a.getInt(R.styleable.RangeSeekBar_selectedMaxValue, selectedMaxValue);
    minRangeValue = a.getInt(R.styleable.RangeSeekBar_minRangeValue, minRangeValue);
    maxRangeValue = a.getInt(R.styleable.RangeSeekBar_maxRangeValue, maxRangeValue);
    a.recycle();
}

編集:これは標準的な方法ですか?

final String xmlns="http://schemas.android.com/apk/res/android";
    int xmlRes = attrs.getAttributeResourceValue(xmlns, "background", -1);
    String xmlText = attrs.getAttributeValue(xmlns, "text");
4

2 に答える 2

10

私たちはこれで行くと思います:

final String xmlns="http://schemas.android.com/apk/res/android";
int xmlRes = attrs.getAttributeResourceValue(xmlns, "background", -1);
String xmlText = attrs.getAttributeValue(xmlns, "text");
于 2012-11-24T09:37:17.797 に答える