Constructors Summary |
---|
public CompoundButton(android.content.Context context)
this(context, null);
|
public CompoundButton(android.content.Context context, android.util.AttributeSet attrs)
this(context, attrs, 0);
|
public CompoundButton(android.content.Context context, android.util.AttributeSet attrs, int defStyleAttr)
this(context, attrs, defStyleAttr, 0);
|
public CompoundButton(android.content.Context context, android.util.AttributeSet attrs, int defStyleAttr, int defStyleRes)
super(context, attrs, defStyleAttr, defStyleRes);
final TypedArray a = context.obtainStyledAttributes(
attrs, com.android.internal.R.styleable.CompoundButton, defStyleAttr, defStyleRes);
final Drawable d = a.getDrawable(com.android.internal.R.styleable.CompoundButton_button);
if (d != null) {
setButtonDrawable(d);
}
if (a.hasValue(R.styleable.CompoundButton_buttonTintMode)) {
mButtonTintMode = Drawable.parseTintMode(a.getInt(
R.styleable.CompoundButton_buttonTintMode, -1), mButtonTintMode);
mHasButtonTintMode = true;
}
if (a.hasValue(R.styleable.CompoundButton_buttonTint)) {
mButtonTintList = a.getColorStateList(R.styleable.CompoundButton_buttonTint);
mHasButtonTint = true;
}
final boolean checked = a.getBoolean(
com.android.internal.R.styleable.CompoundButton_checked, false);
setChecked(checked);
a.recycle();
applyButtonTint();
|
Methods Summary |
---|
private void | applyButtonTint()
if (mButtonDrawable != null && (mHasButtonTint || mHasButtonTintMode)) {
mButtonDrawable = mButtonDrawable.mutate();
if (mHasButtonTint) {
mButtonDrawable.setTintList(mButtonTintList);
}
if (mHasButtonTintMode) {
mButtonDrawable.setTintMode(mButtonTintMode);
}
// The drawable (or one of its children) may not have been
// stateful before applying the tint, so let's try again.
if (mButtonDrawable.isStateful()) {
mButtonDrawable.setState(getDrawableState());
}
}
|
public void | drawableHotspotChanged(float x, float y)
super.drawableHotspotChanged(x, y);
if (mButtonDrawable != null) {
mButtonDrawable.setHotspot(x, y);
}
|
protected void | drawableStateChanged()
super.drawableStateChanged();
if (mButtonDrawable != null) {
int[] myDrawableState = getDrawableState();
// Set the state of the Drawable
mButtonDrawable.setState(myDrawableState);
invalidate();
}
|
public android.content.res.ColorStateList | getButtonTintList()
return mButtonTintList;
|
public PorterDuff.Mode | getButtonTintMode()
return mButtonTintMode;
|
public int | getCompoundPaddingLeft()
int padding = super.getCompoundPaddingLeft();
if (!isLayoutRtl()) {
final Drawable buttonDrawable = mButtonDrawable;
if (buttonDrawable != null) {
padding += buttonDrawable.getIntrinsicWidth();
}
}
return padding;
|
public int | getCompoundPaddingRight()
int padding = super.getCompoundPaddingRight();
if (isLayoutRtl()) {
final Drawable buttonDrawable = mButtonDrawable;
if (buttonDrawable != null) {
padding += buttonDrawable.getIntrinsicWidth();
}
}
return padding;
|
public int | getHorizontalOffsetForDrawables()
final Drawable buttonDrawable = mButtonDrawable;
return (buttonDrawable != null) ? buttonDrawable.getIntrinsicWidth() : 0;
|
public boolean | isChecked()
return mChecked;
|
public void | jumpDrawablesToCurrentState()
super.jumpDrawablesToCurrentState();
if (mButtonDrawable != null) mButtonDrawable.jumpToCurrentState();
|
protected int[] | onCreateDrawableState(int extraSpace)
final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
if (isChecked()) {
mergeDrawableStates(drawableState, CHECKED_STATE_SET);
}
return drawableState;
|
protected void | onDraw(android.graphics.Canvas canvas)
final Drawable buttonDrawable = mButtonDrawable;
if (buttonDrawable != null) {
final int verticalGravity = getGravity() & Gravity.VERTICAL_GRAVITY_MASK;
final int drawableHeight = buttonDrawable.getIntrinsicHeight();
final int drawableWidth = buttonDrawable.getIntrinsicWidth();
final int top;
switch (verticalGravity) {
case Gravity.BOTTOM:
top = getHeight() - drawableHeight;
break;
case Gravity.CENTER_VERTICAL:
top = (getHeight() - drawableHeight) / 2;
break;
default:
top = 0;
}
final int bottom = top + drawableHeight;
final int left = isLayoutRtl() ? getWidth() - drawableWidth : 0;
final int right = isLayoutRtl() ? getWidth() : drawableWidth;
buttonDrawable.setBounds(left, top, right, bottom);
final Drawable background = getBackground();
if (background != null) {
background.setHotspotBounds(left, top, right, bottom);
}
}
super.onDraw(canvas);
if (buttonDrawable != null) {
final int scrollX = mScrollX;
final int scrollY = mScrollY;
if (scrollX == 0 && scrollY == 0) {
buttonDrawable.draw(canvas);
} else {
canvas.translate(scrollX, scrollY);
buttonDrawable.draw(canvas);
canvas.translate(-scrollX, -scrollY);
}
}
|
public void | onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent event)
super.onInitializeAccessibilityEvent(event);
event.setClassName(CompoundButton.class.getName());
event.setChecked(mChecked);
|
public void | onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo info)
super.onInitializeAccessibilityNodeInfo(info);
info.setClassName(CompoundButton.class.getName());
info.setCheckable(true);
info.setChecked(mChecked);
|
public void | onRestoreInstanceState(android.os.Parcelable state)
SavedState ss = (SavedState) state;
super.onRestoreInstanceState(ss.getSuperState());
setChecked(ss.checked);
requestLayout();
|
public android.os.Parcelable | onSaveInstanceState()
Parcelable superState = super.onSaveInstanceState();
SavedState ss = new SavedState(superState);
ss.checked = isChecked();
return ss;
|
public boolean | performClick()
toggle();
final boolean handled = super.performClick();
if (!handled) {
// View only makes a sound effect if the onClickListener was
// called, so we'll need to make one here instead.
playSoundEffect(SoundEffectConstants.CLICK);
}
return handled;
|
public void | setButtonDrawable(int resid)Set the button graphic to a given Drawable, identified by its resource
id.
if (resid != 0 && resid == mButtonResource) {
return;
}
mButtonResource = resid;
Drawable d = null;
if (mButtonResource != 0) {
d = getContext().getDrawable(mButtonResource);
}
setButtonDrawable(d);
|
public void | setButtonDrawable(android.graphics.drawable.Drawable d)Set the button graphic to a given Drawable
if (mButtonDrawable != d) {
if (mButtonDrawable != null) {
mButtonDrawable.setCallback(null);
unscheduleDrawable(mButtonDrawable);
}
mButtonDrawable = d;
if (d != null) {
d.setCallback(this);
d.setLayoutDirection(getLayoutDirection());
if (d.isStateful()) {
d.setState(getDrawableState());
}
d.setVisible(getVisibility() == VISIBLE, false);
setMinHeight(d.getIntrinsicHeight());
applyButtonTint();
}
}
|
public void | setButtonTintList(android.content.res.ColorStateList tint)Applies a tint to the button drawable. Does not modify the current tint
mode, which is {@link PorterDuff.Mode#SRC_IN} by default.
Subsequent calls to {@link #setButtonDrawable(Drawable)} will
automatically mutate the drawable and apply the specified tint and tint
mode using
{@link Drawable#setTintList(ColorStateList)}.
mButtonTintList = tint;
mHasButtonTint = true;
applyButtonTint();
|
public void | setButtonTintMode(PorterDuff.Mode tintMode)Specifies the blending mode used to apply the tint specified by
{@link #setButtonTintList(ColorStateList)}} to the button drawable. The
default mode is {@link PorterDuff.Mode#SRC_IN}.
mButtonTintMode = tintMode;
mHasButtonTintMode = true;
applyButtonTint();
|
public void | setChecked(boolean checked)Changes the checked state of this button.
if (mChecked != checked) {
mChecked = checked;
refreshDrawableState();
notifyViewAccessibilityStateChangedIfNeeded(
AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
// Avoid infinite recursions if setChecked() is called from a listener
if (mBroadcasting) {
return;
}
mBroadcasting = true;
if (mOnCheckedChangeListener != null) {
mOnCheckedChangeListener.onCheckedChanged(this, mChecked);
}
if (mOnCheckedChangeWidgetListener != null) {
mOnCheckedChangeWidgetListener.onCheckedChanged(this, mChecked);
}
mBroadcasting = false;
}
|
public void | setOnCheckedChangeListener(android.widget.CompoundButton$OnCheckedChangeListener listener)Register a callback to be invoked when the checked state of this button
changes.
mOnCheckedChangeListener = listener;
|
void | setOnCheckedChangeWidgetListener(android.widget.CompoundButton$OnCheckedChangeListener listener)Register a callback to be invoked when the checked state of this button
changes. This callback is used for internal purpose only.
mOnCheckedChangeWidgetListener = listener;
|
public void | toggle()
setChecked(!mChecked);
|
protected boolean | verifyDrawable(android.graphics.drawable.Drawable who)
return super.verifyDrawable(who) || who == mButtonDrawable;
|