package skin.support.widget; import android.content.Context; import android.support.annotation.DrawableRes; import android.support.v7.widget.AppCompatRadioButton; import android.util.AttributeSet; import skin.support.R; /** * Created by ximsfei on 17-1-14. */ public class SkinCompatRadioButton extends AppCompatRadioButton implements SkinCompatSupportable { private SkinCompatTextHelper mTextHelper; private SkinCompatCompoundButtonHelper mCompoundButtonHelper; private SkinCompatBackgroundHelper mBackgroundTintHelper; public SkinCompatRadioButton(Context context) { this(context, null); } public SkinCompatRadioButton(Context context, AttributeSet attrs) { this(context, attrs, R.attr.radioButtonStyle); } public SkinCompatRadioButton(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mCompoundButtonHelper = new SkinCompatCompoundButtonHelper(this); mCompoundButtonHelper.loadFromAttributes(attrs, defStyleAttr); mTextHelper = SkinCompatTextHelper.create(this); mTextHelper.loadFromAttributes(attrs, defStyleAttr); mBackgroundTintHelper = new SkinCompatBackgroundHelper(this); mBackgroundTintHelper.loadFromAttributes(attrs, defStyleAttr); } @Override public void setButtonDrawable(@DrawableRes int resId) { super.setButtonDrawable(resId); if (mCompoundButtonHelper != null) { mCompoundButtonHelper.setButtonDrawable(resId); } } @Override public void setTextAppearance(int resId) { setTextAppearance(getContext(), resId); } @Override public void setTextAppearance(Context context, int resId) { super.setTextAppearance(context, resId); if (mTextHelper != null) { mTextHelper.onSetTextAppearance(context, resId); } } @Override public void setCompoundDrawablesRelativeWithIntrinsicBounds( @DrawableRes int start, @DrawableRes int top, @DrawableRes int end, @DrawableRes int bottom) { super.setCompoundDrawablesRelativeWithIntrinsicBounds(start, top, end, bottom); if (mTextHelper != null) { mTextHelper.onSetCompoundDrawablesRelativeWithIntrinsicBounds(start, top, end, bottom); } } @Override public void setCompoundDrawablesWithIntrinsicBounds( @DrawableRes int left, @DrawableRes int top, @DrawableRes int right, @DrawableRes int bottom) { super.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom); if (mTextHelper != null) { mTextHelper.onSetCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom); } } public void setBackgroundResource(int resId) { super.setBackgroundResource(resId); if (mBackgroundTintHelper != null) { mBackgroundTintHelper.onSetBackgroundResource(resId); } } @Override public void applySkin() { if (mBackgroundTintHelper != null) { mBackgroundTintHelper.applySkin(); } if (mCompoundButtonHelper != null) { mCompoundButtonHelper.applySkin(); } if (mTextHelper != null) { mTextHelper.applySkin(); } } }