Android APIs
public abstract class

CompoundButton

extends Button
implements Checkable
java.lang.Object
   ↳ android.view.View
     ↳ android.widget.TextView
       ↳ android.widget.Button
         ↳ android.widget.CompoundButton
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

A button with two states, checked and unchecked. When the button is pressed or clicked, the state changes automatically.

XML attributes

See CompoundButton Attributes, Button Attributes, TextView Attributes, View Attributes

Summary

Nested Classes
interface CompoundButton.OnCheckedChangeListener Interface definition for a callback to be invoked when the checked state of a compound button changed. 
XML Attributes
Attribute Name Related Method Description
android:button setButtonDrawable(Drawable) Drawable used for the button graphic (e.g. 
android:buttonTint setButtonTintList(ColorStateList) Tint to apply to the button graphic. 
android:buttonTintMode setButtonTintMode(PorterDuff.Mode) Blending mode used to apply the button graphic tint. 
[Expand]
Inherited XML Attributes
From class android.widget.TextView
From class android.view.View
[Expand]
Inherited Constants
From class android.view.View
[Expand]
Inherited Fields
From class android.view.View
Public Constructors
CompoundButton(Context context)
CompoundButton(Context context, AttributeSet attrs)
CompoundButton(Context context, AttributeSet attrs, int defStyleAttr)
CompoundButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
Public Methods
void drawableHotspotChanged(float x, float y)
This function is called whenever the view hotspot changes and needs to be propagated to drawables or child views managed by the view.
CharSequence getAccessibilityClassName()
Return the class name of this object to be used for accessibility purposes.
Drawable getButtonDrawable()
ColorStateList getButtonTintList()
PorterDuff.Mode getButtonTintMode()
int getCompoundPaddingLeft()
Returns the left padding of the view, plus space for the left Drawable if any.
int getCompoundPaddingRight()
Returns the right padding of the view, plus space for the right Drawable if any.
boolean isChecked()
void jumpDrawablesToCurrentState()
Call Drawable.jumpToCurrentState() on all Drawable objects associated with this view.
void onRestoreInstanceState(Parcelable state)
Hook allowing a view to re-apply a representation of its internal state that had previously been generated by onSaveInstanceState().
Parcelable onSaveInstanceState()
Hook allowing a view to generate a representation of its internal state that can later be used to create a new instance with that same state.
boolean performClick()
Call this view's OnClickListener, if it is defined.
void setButtonDrawable(int resId)
Sets a drawable as the compound button image given its resource identifier.
void setButtonDrawable(Drawable drawable)
Sets a drawable as the compound button image.
void setButtonTintList(ColorStateList tint)
Applies a tint to the button drawable.
void setButtonTintMode(PorterDuff.Mode tintMode)
Specifies the blending mode used to apply the tint specified by setButtonTintList(ColorStateList)} to the button drawable.
void setChecked(boolean checked)

Changes the checked state of this button.

void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener)
Register a callback to be invoked when the checked state of this button changes.
void toggle()
Change the checked state of the view to the inverse of its current state
Protected Methods
void drawableStateChanged()
This function is called whenever the state of the view changes in such a way that it impacts the state of drawables being shown.
int[] onCreateDrawableState(int extraSpace)
Generate the new Drawable state for this view.
void onDraw(Canvas canvas)
Implement this to do your drawing.
boolean verifyDrawable(Drawable who)
If your view subclass is displaying its own Drawable objects, it should override this function and return true for any Drawable it is displaying.
[Expand]
Inherited Methods
From class android.widget.Button
From class android.widget.TextView
From class android.view.View
From class java.lang.Object
From interface android.view.ViewTreeObserver.OnPreDrawListener
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.accessibility.AccessibilityEventSource
From interface android.widget.Checkable

XML Attributes

android:button

Drawable used for the button graphic (e.g. checkbox, radio button, etc).

Must be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name".

This corresponds to the global attribute resource symbol button.

Related Methods

android:buttonTint

Tint to apply to the button graphic.

Must be a color value, in the form of "#rgb", "#argb", "#rrggbb", or "#aarrggbb".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol buttonTint.

android:buttonTintMode

Blending mode used to apply the button graphic tint.

Must be one of the following constant values.

ConstantValueDescription
src_over3 The tint is drawn on top of the drawable. [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc]
src_in5 The tint is masked by the alpha channel of the drawable. The drawable’s color channels are thrown out. [Sa * Da, Sc * Da]
src_atop9 The tint is drawn above the drawable, but with the drawable’s alpha channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc]
multiply14 Multiplies the color and alpha channels of the drawable with those of the tint. [Sa * Da, Sc * Dc]
screen15 [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]
add16 Combines the tint and drawable color and alpha channels, clamping the result to valid color values. Saturate(S + D)

This corresponds to the global attribute resource symbol buttonTintMode.

Public Constructors

public CompoundButton (Context context)

Added in API level 1

public CompoundButton (Context context, AttributeSet attrs)

Added in API level 1

public CompoundButton (Context context, AttributeSet attrs, int defStyleAttr)

Added in API level 1

public CompoundButton (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Added in API level 21

Public Methods

public void drawableHotspotChanged (float x, float y)

Added in API level 21

This function is called whenever the view hotspot changes and needs to be propagated to drawables or child views managed by the view.

Dispatching to child views is handled by dispatchDrawableHotspotChanged(float, float).

Be sure to call through to the superclass when overriding this function.

Parameters
x hotspot x coordinate
y hotspot y coordinate

public CharSequence getAccessibilityClassName ()

Added in API level 23

Return the class name of this object to be used for accessibility purposes. Subclasses should only override this if they are implementing something that should be seen as a completely new class of view when used by accessibility, unrelated to the class it is deriving from. This is used to fill in AccessibilityNodeInfo.setClassName.

public Drawable getButtonDrawable ()

Added in API level 23

Returns
  • the drawable used as the compound button image

public ColorStateList getButtonTintList ()

Added in API level 21

Related XML Attributes
Returns
  • the tint applied to the button drawable

public PorterDuff.Mode getButtonTintMode ()

Added in API level 21

Related XML Attributes
Returns
  • the blending mode used to apply the tint to the button drawable

public int getCompoundPaddingLeft ()

Added in API level 1

Returns the left padding of the view, plus space for the left Drawable if any.

public int getCompoundPaddingRight ()

Added in API level 1

Returns the right padding of the view, plus space for the right Drawable if any.

public boolean isChecked ()

Added in API level 1

public void jumpDrawablesToCurrentState ()

Added in API level 11

Call Drawable.jumpToCurrentState() on all Drawable objects associated with this view.

Also calls jumpToCurrentState() if there is a StateListAnimator attached to this view.

public void onRestoreInstanceState (Parcelable state)

Added in API level 1

Hook allowing a view to re-apply a representation of its internal state that had previously been generated by onSaveInstanceState(). This function will never be called with a null state.

Parameters
state The frozen state that had previously been returned by onSaveInstanceState().

public Parcelable onSaveInstanceState ()

Added in API level 1

Hook allowing a view to generate a representation of its internal state that can later be used to create a new instance with that same state. This state should only contain information that is not persistent or can not be reconstructed later. For example, you will never store your current position on screen because that will be computed again when a new instance of the view is placed in its view hierarchy.

Some examples of things you may store here: the current cursor position in a text view (but usually not the text itself since that is stored in a content provider or other persistent storage), the currently selected item in a list view.

Returns
  • Returns a Parcelable object containing the view's current dynamic state, or null if there is nothing interesting to save. The default implementation returns null.

public boolean performClick ()

Added in API level 1

Call this view's OnClickListener, if it is defined. Performs all normal actions associated with clicking: reporting accessibility event, playing a sound, etc.

Returns
  • True there was an assigned OnClickListener that was called, false otherwise is returned.

public void setButtonDrawable (int resId)

Added in API level 1

Sets a drawable as the compound button image given its resource identifier.

Related XML Attributes
Parameters
resId the resource identifier of the drawable

public void setButtonDrawable (Drawable drawable)

Added in API level 1

Sets a drawable as the compound button image.

Related XML Attributes
Parameters
drawable the drawable to set

public void setButtonTintList (ColorStateList tint)

Added in API level 21

Applies a tint to the button drawable. Does not modify the current tint mode, which is SRC_IN by default.

Subsequent calls to setButtonDrawable(Drawable) will automatically mutate the drawable and apply the specified tint and tint mode using setTintList(ColorStateList).

Related XML Attributes
Parameters
tint the tint to apply, may be null to clear tint

public void setButtonTintMode (PorterDuff.Mode tintMode)

Added in API level 21

Specifies the blending mode used to apply the tint specified by setButtonTintList(ColorStateList)} to the button drawable. The default mode is SRC_IN.

Related XML Attributes
Parameters
tintMode the blending mode used to apply the tint, may be null to clear tint

public void setChecked (boolean checked)

Added in API level 1

Changes the checked state of this button.

Parameters
checked true to check the button, false to uncheck it

public void setOnCheckedChangeListener (CompoundButton.OnCheckedChangeListener listener)

Added in API level 1

Register a callback to be invoked when the checked state of this button changes.

Parameters
listener the callback to call on checked state change

public void toggle ()

Added in API level 1

Change the checked state of the view to the inverse of its current state

Protected Methods

protected void drawableStateChanged ()

Added in API level 1

This function is called whenever the state of the view changes in such a way that it impacts the state of drawables being shown.

If the View has a StateListAnimator, it will also be called to run necessary state change animations.

Be sure to call through to the superclass when overriding this function.

protected int[] onCreateDrawableState (int extraSpace)

Added in API level 1

Generate the new Drawable state for this view. This is called by the view system when the cached Drawable state is determined to be invalid. To retrieve the current state, you should use getDrawableState().

Parameters
extraSpace if non-zero, this is the number of extra entries you would like in the returned array in which you can place your own states.
Returns
  • Returns an array holding the current Drawable state of the view.

protected void onDraw (Canvas canvas)

Added in API level 1

Implement this to do your drawing.

Parameters
canvas the canvas on which the background will be drawn

protected boolean verifyDrawable (Drawable who)

Added in API level 1

If your view subclass is displaying its own Drawable objects, it should override this function and return true for any Drawable it is displaying. This allows animations for those drawables to be scheduled.

Be sure to call through to the super class when overriding this function.

Parameters
who The Drawable to verify. Return true if it is one you are displaying, else return the result of calling through to the super class.
Returns
  • boolean If true than the Drawable is being displayed in the view; else false and it is not allowed to animate.