在自定義視圖中,我可以從AttributeSet中獲取自定義attrs值(如下所示)。但是,我如何獲得Android屬性?例如,我如何訪問android:background或android:text? android.R.styleable是不允許的。從AttributeSet獲取Android樣式屬性
<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");
不能確定,但是如果你使用的 「android.R.attr.text」 或 「android.R.attr.background」,而不是「INT xmlRes = ATTRS。 getAttributeResourceValue(xmlns,「background」,-1)「? – nfirex