Diferencia entre revisiones de «CheckBox»
Ir a la navegación
Ir a la búsqueda
| Línea 35: | Línea 35: | ||
<br /> | <br /> | ||
| − | * Dentro do paquete '''Checkboxes''' crear unha nova 'Empty Activity' de nome: '''UD02_01_CkeckBox''' de tipo Launcher | + | * 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 [http://wiki.cifprodolfoucha.es/index.php?title=PDM_Creando_proxecto_base xa vimos na creación do proxecto base]. | : Modifica o arquivo '''AndroidManifiest.xml''' e engade unha label á activity como [http://wiki.cifprodolfoucha.es/index.php?title=PDM_Creando_proxecto_base xa vimos na creación do proxecto base]. | ||
| − | *Imos crear unha aplicación na que o usuario indique as súas afeccións ("Aficiones"). | + | * 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. | ||
<gallery caption="CheckBox" widths="350" heights="300px" perrow="2"> | <gallery caption="CheckBox" widths="350" heights="300px" perrow="2"> | ||
| − | Image: | + | Image:PDM_checkbox_base_1.jpg | Arrastramos un chechbox. |
| − | Image: | + | Image:PDM_checkbox_base_2.jpg | Cambiamos o texto. Podemos ver outras propiedades do View. O símbolo con guión indica que ten asinado o valor por defecto. Se prememos o cambiamos a true / false. |
| − | Image: | + | Image:PDM_checkbox_base_4.jpg | Colocamos os tres CheckBox´s ao noso gusto. |
| + | Image:PDM_checkbox_base_3.jpg | Ao executar a activity aparecerán algunhas propiedadades cambiadas e unha mensaxe. | ||
</gallery> | </gallery> | ||
| − | + | '''Código do Layout:''' | |
| − | : | ||
| − | + | <syntaxhighlight lang="xml" enclose="div" highlight=""> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | <syntaxhighlight lang="xml" | ||
<?xml version="1.0" encoding="utf-8"?> | <?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_width="match_parent" | ||
android:layout_height="match_parent" | android:layout_height="match_parent" | ||
| − | + | tools:context="cifprodolfoucha.cursoandroid.aprendiendo.UI.Checkboxes.UD02_01_CkeckBox"> | |
<CheckBox | <CheckBox | ||
| − | android:id="@+id/ | + | android:id="@+id/chkInformatica" |
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||
| − | android: | + | android:layout_marginStart="8dp" |
| − | android:text="Informática" /> | + | android:layout_marginTop="8dp" |
| + | android:text="Informática" | ||
| + | app:layout_constraintStart_toStartOf="parent" | ||
| + | app:layout_constraintTop_toTopOf="parent" /> | ||
<CheckBox | <CheckBox | ||
| − | android:id="@+id/ | + | android:id="@+id/chkLer" |
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||
| − | android: | + | android:layout_marginStart="8dp" |
| − | android:text="Ler" /> | + | android:layout_marginTop="8dp" |
| + | android:text="Ler" | ||
| + | app:layout_constraintStart_toStartOf="parent" | ||
| + | app:layout_constraintTop_toBottomOf="@+id/chkInformatica" /> | ||
<CheckBox | <CheckBox | ||
| − | android:id="@+id/ | + | android:id="@+id/chkDeporte" |
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||
| − | android: | + | android:layout_marginStart="8dp" |
| − | android: | + | android:layout_marginTop="8dp" |
| − | + | android:text="Deportes" | |
| − | + | app:layout_constraintStart_toStartOf="parent" | |
| − | android: | + | app:layout_constraintTop_toBottomOf="@+id/chkLer" /> |
| − | + | </androidx.constraintlayout.widget.ConstraintLayout> | |
| − | + | </syntaxhighlight> | |
| − | |||
| − | |||
| − | |||
<br /> | <br /> | ||
| − | + | '''Código da Activity:''' | |
| − | |||
| − | |||
| − | + | <syntaxhighlight lang="java" enclose="div" highlight="8-9,11,13-16"> | |
| − | + | 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"); | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
} | } | ||
} | } | ||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
==Caso práctico 2== | ==Caso práctico 2== | ||
Revisión del 16:56 15 nov 2020
Sumario
Introdución
- Un CheckBox permite ao usuario elixir unha ou máis opcións dentro dun conxunto.
- Este control ao igual que ToggleButton e Switch herda da clase CompoundButton, quen, á súa vez, herda da clase Button.
- Imaxe obtida de: http://www.itcsolutions.eu/2011/08/27/android-tutorial-4-procedural-vs-declarative-design-of-user-interfaces
- Por tanto, funcionan da mesma maneira:
- Ten 2 estados (True/False), que podemos comprobar co método isChecked ().
- Podemos cambiar o seu estado cambiar o seu estado por programación chamando ao método setChecked(boolean)
- Podemos xestionar o cambio de estado dun CheckBox coa chamada ao método setOnCheckedChangeListener(OnCheckedChangeListener)
- 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/>
- Referencias:
- O control CheckBox: http://developer.android.com/reference/android/widget/CheckBox.html
- Introdución ao CheckBox: http://developer.android.com/guide/topics/ui/controls/checkbox.html
Caso práctico 1
- Partimos que xa temos creado o proxecto inicial como xa indicamos anteriormente.
- 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.
- CheckBox
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");
}
}
Caso práctico 2
- Neste caso imos xestionar o evento de cambio de estado do CheckBox implementando a interface correspondente na Activity.
- Lembrar que xa vimos nesta Wiki as diferentes formas de implementar as interfaces.
- Partimos que xa temos creado o proxecto inicial como xa indicamos anteriormente.
- 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_02_CkeckBox de tipo Launcher.
- Modifica o arquivo AndroidManifiest.xml e engade unha label á activity como xa vimos na creación do proxecto base.
- Imos xestionar o evento de Click sobre dúas Checkbox pero empregando a interface OnCheckedChangeListener.
Layout XML
Arquivo de Layout:
1 <?xml version="1.0" encoding="utf-8"?>
2 <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent"
7 tools:context=".UD2.UI.CheckBoxes.UD02_02_CkeckBox">
8
9 <CheckBox
10 android:id="@+id/chkbox2_UD02_01_Checkbox"
11 android:layout_width="wrap_content"
12 android:layout_height="wrap_content"
13 android:layout_marginTop="8dp"
14 android:layout_marginEnd="8dp"
15 android:text="CheckBox 2"
16 app:layout_constraintEnd_toEndOf="parent"
17 app:layout_constraintTop_toTopOf="parent" />
18
19 <CheckBox
20 android:id="@+id/chkbox1_UD02_01_Checkbox"
21 android:layout_width="wrap_content"
22 android:layout_height="wrap_content"
23 android:layout_marginStart="8dp"
24 android:layout_marginTop="8dp"
25 android:text="CheckBox 1"
26 app:layout_constraintStart_toStartOf="parent"
27 app:layout_constraintTop_toTopOf="parent" />
28 </android.support.constraint.ConstraintLayout>
Código Java
Activity UD02_02_CkeckBox
1 package cifprodolfoucha.cursoandroid.aprendiendo.UD2.UI.CheckBoxes;
2
3 import android.support.v7.app.AppCompatActivity;
4 import android.os.Bundle;
5 import android.widget.CheckBox;
6 import android.widget.CompoundButton;
7 import android.widget.Toast;
8
9 import cifprodolfoucha.cursoandroid.aprendiendo.R;
10
11 public class UD02_02_CkeckBox extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {
12
13 @Override
14 protected void onCreate(Bundle savedInstanceState) {
15 super.onCreate(savedInstanceState);
16 setContentView(R.layout.activity_ud02_02__ckeck_box);
17
18 ((CheckBox)findViewById(R.id.chkbox1_UD02_01_Checkbox)).setOnCheckedChangeListener(this);
19 ((CheckBox)findViewById(R.id.chkbox2_UD02_01_Checkbox)).setOnCheckedChangeListener(this);
20 }
21
22 @Override
23 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
24
25 switch (buttonView.getId()){
26
27 case R.id.chkbox1_UD02_01_Checkbox: // Aquí iría o código específico para o primeiro checkbox.
28 if (isChecked){
29 Toast.makeText(this,"Se activou checkbox1" ,Toast.LENGTH_SHORT).show();
30 }
31 else{
32 Toast.makeText(this,"Se desactivou checkbox1" ,Toast.LENGTH_SHORT).show();
33 }
34 break;
35 case R.id.chkbox2_UD02_01_Checkbox:
36 if (isChecked){
37 Toast.makeText(this,"Se activou checkbox2" ,Toast.LENGTH_SHORT).show();
38 }
39 else{
40 Toast.makeText(this,"Se desactivou checkbox2",Toast.LENGTH_SHORT).show();
41 }
42 break;
43
44 }
45
46 }
47 }
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
-- Ángel D. Fernández González e Carlos Carrión Álvarez -- (2015).
