Diferencia entre revisiones de «CheckBox»
Ir a la navegación
Ir a la búsqueda
(No se muestran 15 ediciones intermedias de 2 usuarios) | |||
Línea 20: | Línea 20: | ||
− | *Para usalo nun XML layout usar a etiqueta <CheckBox/> | + | * Para usalo nun XML layout usar a etiqueta <CheckBox/> |
Línea 27: | Línea 27: | ||
**Introdución ao CheckBox: http://developer.android.com/guide/topics/ui/controls/checkbox.html | **Introdución ao CheckBox: http://developer.android.com/guide/topics/ui/controls/checkbox.html | ||
+ | <br /> | ||
==Caso práctico 1== | ==Caso práctico 1== | ||
Línea 35: | Línea 36: | ||
<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:text="Deportes" /> | + | android:layout_marginTop="8dp" |
+ | android:text="Deportes" | ||
+ | app:layout_constraintStart_toStartOf="parent" | ||
+ | app:layout_constraintTop_toBottomOf="@+id/chkLer" /> | ||
+ | </androidx.constraintlayout.widget.ConstraintLayout> | ||
+ | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<br /> | <br /> | ||
− | ===Código | + | ===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> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<br /> | <br /> | ||
− | |||
+ | ==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,... | ||
− | < | + | <syntaxhighlight lang="java" highlight=""> |
− | + | 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 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
<br /> | <br /> | ||
− | ''' | + | '''[https://wiki.cifprodolfoucha.es/index.php?title=Programaci%C3%B3n_de_dispositivos_m%C3%B3biles#UNIDADE_2:_A_interface_de_usuario. Enlace a la página principal de la UD2]''' |
− | < | + | <br /> |
− | + | <br /> | |
− | + | '''[https://wiki.cifprodolfoucha.es/index.php?title=Programación_de_dispositivos_móbiles Enlace a la página principal del curso]''' | |
− | + | <br /> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | </ | ||
− | |||
Revisión actual del 17:00 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.
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).