CheckBox

De MediaWiki
Ir a la navegación Ir a la búsqueda

Introdución

  • Un CheckBox permite ao usuario elixir unha ou máis opcións dentro dun conxunto.

00 checkboxes.png

  • Este control ao igual que ToggleButton e Switch herda da clase CompoundButton, quen, á súa vez, herda da clase Button.

00 Part of Android View Hierarchy.png



  • Por tanto, funcionan da mesma maneira:


  • Tamén podemos xestionar os eventos da mesma forma que nos botóns, coa interface OnClickListener.


  • Para usalo nun XML layout usar a etiqueta <CheckBox/>



Caso práctico 1

Se non o temos creado antes, crea un paquete de nome UI como un subpaquete do teu paquete principal.
Dentro do paquete UI, crearemos un novo paquete de nome: Checkboxes.



  • Dentro do paquete Checkboxes crear unha nova 'Empty Activity' de nome: UD02_01_CkeckBox de tipo Launcher.
Modifica o arquivo AndroidManifiest.xml e engade unha label á activity como xa vimos na creación do proxecto base.


  • Imos crear unha aplicación na que o usuario indique as súas afeccións ("Aficiones").
Como aínda non sabemos xestionar os eventos, no método onCreate faremos referencia aos tres checkbox e modificaremos varias propiedades.

Código do Layout

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="cifprodolfoucha.cursoandroid.aprendiendo.UI.Checkboxes.UD02_01_CkeckBox">

    <CheckBox
        android:id="@+id/chkInformatica"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Informática"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <CheckBox
        android:id="@+id/chkLer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Ler"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/chkInformatica" />

    <CheckBox
        android:id="@+id/chkDeporte"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Deportes"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/chkLer" />
</androidx.constraintlayout.widget.ConstraintLayout>



Código da Activity:

public class UD02_01_CkeckBox extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_u_d02_01__ckeck_box);

        CheckBox checkLer = findViewById(R.id.chkLer);    // Obtemos unha referencia ao checbox ler.
        Toast.makeText(this,checkLer.getText().toString() + " " + String.valueOf(checkLer.isChecked()),Toast.LENGTH_SHORT).show();  // Amosamos unha mensaxe có seu texto e estado

        ((CheckBox)findViewById(R.id.chkInformatica)).setChecked(true); // Podemos non crear unha variable para gardar a referencia ao checkbox. Neste caso cambiamos o estado do checbox.

        CheckBox chkDeportes = findViewById(R.id.chkDeporte);
        chkDeportes.setBackgroundColor(Color.BLUE);  // Cambiamos outras propiedades. Podemos cambiar por programación calquera propiedade do deseñador.
        chkDeportes.setTextColor(Color.RED);
        chkDeportes.setText("NOVA AFICCION");
    }
}


Métodos mínimos a coñecer no manexo dos CheckBox

  • Referenciar a un CheckBox có método findViewById.
  • Recuperar o contido do texto asociado.
  • Cambiar o contido do texto, podendo empregar recursos gardados en /res/values.
  • Engadir novo texto a un existente.
  • Modificar propiedades básicas, como cor, tamaño, visibilidade,...
        CheckBox chk = findViewById(R.id.chk_Uno);                                                          // Referenciamos a un CheckBox que estea no Layout da Activity

        Toast.makeText(getApplicationContext(),chk.getText() + " " + String.valueOf(chk.isChecked()),Toast.LENGTH_LONG).show();   // Obtemos o texto e estado de check con isChecked()

        chk.setText("Novo texto Check");                                                                    // Cambiamos o texto do check

        chk.setChecked(true);                                                                               // Cambimos o estado de check (on/off) => Lanza o evento anterior por ter o setOnXXX antes



Enlace a la página principal de la UD2

Enlace a la página principal del curso




-- Ángel D. Fernández González e Carlos Carrión Álvarez -- (2015).