When I check QuickContactBadge in FrameLayout, I found following code:
public QuickContactBadge(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray a =
context.obtainStyledAttributes(attrs,
com.android.internal.R.styleable.QuickContactBadge, defStyle, 0);
mMode = a.getInt(com.android.internal.R.styleable.QuickContactBadge_quickContactWindowSize,
QuickContact.MODE_MEDIUM);
a.recycle();
init();
mBadgeBackground = getBackground();
}
I don't really catch the meaning of defstyle and 0 parameter in obtainStyledAttributes(). I have looked up reference, but still don't know what it used for.
The documentation says:
defStyleAttr An attribute in the current theme that contains a reference to a style resource that supplies defaults values for the StyledAttributes. Can be 0 to not look for defaults.
defStyleRes A resource identifier of a style resource that supplies default values for the StyledAttributes, used only if defStyleAttr is 0 or can not be found in the theme. Can be 0 to not look for defaults.
"Can be 0 to not look for defaults." If you set this to 0 then it's not going to try to grab default values for the style attributes. It does seem a little counter-intuitive, why overload this method if you can just pass in a 0... but I think it is so you can tell it not to look in defStyleAttr for defaults but do tell it to look in defStyleRes for defaults, and vice versa.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With