# Selection controls: checkboxes [Selection controls](https://material.io/components/selection-controls#usage) allow the user to select options. Use checkboxes to: * Select one or more options from a list * Present a list containing sub-selections * Turn an item on or off in a desktop environment ![Checkbox hero example for menu options](assets/checkbox/checkbox_hero.png) ## Contents * [Using checkboxes](#using-checkboxes) * [Checkbox](#checkbox) * [Theming checkboxes](#theming-checkboxes) ## Using checkboxes Before you can use Material checkboxes, you need to add a dependency to the Material Components for Android library. For more information, go to the [Getting started](https://github.com/material-components/material-components-android/tree/master/docs/getting-started.md) page. _**Note:** `` is auto-inflated as `` via `MaterialComponentsViewInflater` when using a non-Bridge `Theme.MaterialComponents.*` theme._ ### Making checkboxes accessible Checkboxes support content labeling for accessibility and are readable by most screen readers, such as TalkBack. Text rendered in check boxes is automatically provided to accessibility services. Additional content labels are usually unnecessary. ## Checkbox A checkbox is a square button with a check to denote its current state. Checkboxes allow the user to select one or more items from a set. Checkboxes can be used to turn an option on or off. Unlike radio buttons, changes in the states of one checkbox do not usually affect other checkboxes. _**Note:** Checkboxes do not support shape theming and are only rounded square checkboxes._ ### Checkboxes example API and source code: * `MaterialCheckBox` * [Class definition](https://developer.android.com/reference/com/google/android/material/checkbox/MaterialCheckBox) * [Class source](https://github.com/material-components/material-components-android/tree/master/lib/java/com/google/android/material/checkbox/MaterialCheckBox.java) The following example shows a list of five checkboxes. ![Example of 5 checkboxes, the first one is checked and the last one is disabled.](assets/checkbox/checkbox_example.png) In the layout: ```xml ``` In code: ```kt // To check a checkbox checkbox.isChecked = true // To listen for a checkbox's checked/unchecked state changes checkbox.setOnCheckedChangeListener { buttonView, isChecked // Responds to checkbox being checked/unchecked } ``` ## Key properties ### Checkbox attributes   | Attribute | Related method(s) | Default value -------------------------- | ------------------------------------------ | ---------------------------------------------------------- | ------------- **To use material colors** | `app:useMaterialThemeColors` | `setUseMaterialThemeColors`
`isUseMaterialThemeColors` | `true` (ignored if `app:buttonTint` is set) **Color** | `app:buttonTint` | `setButtonTintList`
`getButtonTintList` | `null` **Min size** | `android:minWidth`
`android:minHeight` | `(set/get)MinWidth`
`(set/get)MinHeight` | `?attr/minTouchTargetSize` The color of the checbox defaults to `?attr/colorOnSurface` (unchecked) and `?attr/colorSecondary` (checked) defined in your app theme. If you want to override this behavior, as you might with a custom drawable that should not be tinted, set `app:useMaterialThemeColors` to `false`: ```xml ``` ### Text label attributes   | Attribute | Related method(s) | Default value -------------- | ------------------------ | ---------------------------------- | ------------- **Text label** | `android:text` | `setText`
`getText` | `null` **Color** | `android:textColor` | `setTextColor`
`getTextColors` | inherits from `AppCompatCheckBox` **Typography** | `android:textAppearance` | `setTextAppearance` | inherits from `AppCompatCheckBox` ### Checkbox states Checkboxes can be selected, unselected, or indeterminate. Checkboxes have enabled, disabled, hover, focused, and pressed states. ![Checkbox states in an array. Columns are enabled, disabled, hover, focused, pressed. Rows are selected, unselected, or indeterminite](assets/checkbox/checkbox_states.png) ### Styles   | Style ----------------- | --------------------------------------------------- **Default style** | `Widget.MaterialComponents.CompoundButton.CheckBox` Default style theme attribute: `?attr/checkboxStyle` See the full list of [styles](https://github.com/material-components/material-components-android/tree/master/lib/java/com/google/android/material/checkbox/res/values/styles.xml) and [attrs](https://github.com/material-components/material-components-android/tree/master/lib/java/com/google/android/material/checkbox/res/values/attrs.xml). ## Theming checkboxes Checkboxes support [Material Theming](https://material.io/components/selection-controls#theming) and can be customized in terms of color and typography. ### Checkbox theming example API and source code: * `MaterialCheckBox` * [Class definition](https://developer.android.com/reference/com/google/android/material/checkbox/MaterialCheckBox) * [Class source](https://github.com/material-components/material-components-android/tree/master/lib/java/com/google/android/material/checkbox/MaterialCheckBox.java) The following example shows a checkbox with Material Theming. !["Checkbox theming with pink and brown colors"](assets/checkbox/checkbox_theming.png) #### Implementing checkbox theming Using theme attributes in `res/values/styles.xml` (themes all checkboxes and affects other components): ```xml ``` or using default style theme attributes, styles and theme overlays (themes all checkboxes but does not affect other components): ```xml ``` you can also change the checkbox colors via the `?attr/buttonTint` attribute: ```xml ``` and in `color/button_tint.xml`: ```xml ``` or using the styles in the layout (affects only this checkbox): ```xml ```