Un CheckBox es un tipo concreto de botón que tiene dos estados, puede encontrarse marcado (checked) o desmarcado (unchecked).
Al contrario que los RadioButton, los CheckBox no se suelen utilizar en ningún ViewGroup específico y, por tanto, pueden encontrarse varios de ellos en la misma aplicación y el estado de uno no afecta al estado de los demás.
indica que el CheckButton se encuentra en el estado de marcado.
android:enabled
Heredado de TextView.
Indica que el CheckButton se ve y se puede pulsar o se vé pero no se puede pulsar.
PROGRAMAR EVENTOS DESDE CÓDIGO
La programación de eventos para los CheckBox no tiene ninguna dificultad con respecto a los que hemos visto anteriormente por lo que solamente vamos a ver el código:
MainActivity.kt
package com.example.android.appdeejemploimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.view.Viewimport android.widget.CheckBoximport android.widget.ToastclassMainActivity : AppCompatActivity() {overridefunonCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val cbList: List<CheckBox> =listOf(findViewById(R.id.cbPop),findViewById(R.id.cbRock),findViewById(R.id.cbRap),findViewById(R.id.cbTrap),findViewById(R.id.cbClassic) )for (i in cbList) { i.setOnClickListener{onCheckBoxClicked(it) } } }funonCheckBoxClicked(view: View){val cb = view as CheckBoxif (cb.isChecked) { Toast.makeText(this, "Le gusta la ${cb.text}", Toast.LENGTH_SHORT).show() } else { Toast.makeText(this, "No le ha convencido la ${cb.text}", Toast.LENGTH_SHORT).show() } }}
Como ven, también se pueden utilizar estructuras de datos como listas de Kotlin para hacer referencia a varias Views aunque no se encuentren en el mismo ViewGroup.
PERSONALIZACIÓN
Personalizar botón
Para personalizar un CheckBox podemos hacer uso de las listas de estados para crear un drawable que se ejecute cuando el CheckBox se encuentre en estado checked y otro cuando se encuentre en el estado unchecked.
Esto ya se ha explicado anteriormente así que vamos directamente a ver el código: