Diferencia entre revisiones de «RadioButton»
Ir a la navegación
Ir a la búsqueda
| Línea 212: | Línea 212: | ||
| + | |||
| + | |||
| + | <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 /> | ||
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- (2015). | <br> -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- (2015). | ||
Revisión del 18:55 15 nov 2020
Sumario
Introdución
- O control RadioButton permite escoller unha opción entre varias posibles.
- Aconséllase usar este control sempre que se queiran amosar ao usuario múltiples opcións, unha ao carón doutra.
- En caso contrario débese usar un Spinner (Lista despregable).
- No layout os RadioButton organízanse dentro dun RadioGroup que vai controlar que non haxa máis dunha opción marcada.
- Nota: polas opcións que ofrece a imaxe, tomada de Android SDK, aí debe traballar un galego.
- RadioGroup herda da clase LinearLayout co cal terá as súas propiedades, entre elas: android:orientation
- RadioButton herda da clase CompoundButton ao igual que CheckBox:
- Por tanto, funcionan da mesma maneira:
- Ten 2 estados (True/False), que podemos comprobar co método isChecked ().
- Podemos cambiar o seu estado por programación chamando ao método setChecked(boolean)
- Podemos xestionar o cambio de estado dun RadioButton coa chamada ao método setOnCheckedChangeListener(OnCheckedChangeListener)
- Tamén podemos xestionar os eventos da mesma forma que nos botóns, coa interface OnClickListener ou pola propiedade android:onCLick.
- Imaxe obtida de: http://www.itcsolutions.eu/2011/08/27/android-tutorial-4-procedural-vs-declarative-design-of-user-interfaces
- Referencias:
- Control RadioButton: http://developer.android.com/reference/android/widget/RadioButton.html
- Control RadioGroup: http://developer.android.com/reference/android/widget/RadioGroup.html
- Introdución ao control: http://developer.android.com/guide/topics/ui/controls/radiobutton.html
Caso práctico 1
- Partimos que xa temos creado o proxecto inicial como xa indicamos anteriormente.
- Lembrar que se estades a empregar as bibliotecas de compatibilidade (por defecto), a vosa activity derivará de AppCompactActivity e non de Activity
- Nos exemplos seguintes toda activity deriva de Activity, pero o normal é que empregedes AppCompactActivity (coidado ao copiar os exemplos).
- 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: RadioButtons.
- Dentro do paquete RadioButtons crear unha nova 'Empty Activity' de nome: UD02_01_RadioButtons 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 se é ou non maior de idade e cal é o seu deporte favorito.
- Para iso temos que crear dous RadioGroups. Cada un deles xestionará o conxunto de RadioButtons que teñan de tal forma que soamente poderá estar activo un dos RadioButtons por grupo.
- RadioButton
- Esta sería unha forma de marcar o check por defecto, pero tamén podemos indicalo sobre o RadioGroup. Na mesma Activity imos a engadir un segundo RadioGroup no que seleccionaremos o noso deporte favorito.
- RadioGoup
Arrastramos o segundo RadioGroup e o anclamos segundo as nosas preferencias. Fixarse que o RadioGroup ten que estar á mesma altura que o outro RadioGroup na ventá ComponentTree. Cambiamos o seu id e orientación (tedes que buscar a propiedade pola lista abaixo de todo. Na imaxe aparece arriba porque o valor foi cambiado).
XML do Layout
- Observar como RadioGroup é un layout máis de tipo Linear.
- Observar como a primeira opción está activada por defecto.
1 <?xml version="1.0" encoding="utf-8"?>
2 <androidx.constraintlayout.widget.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="cifprodolfoucha.cursoandroid.aprendiendo.UI.RadioButtons.UD02_01_RadioButtons">
8
9 <RadioGroup
10 android:id="@+id/rgrpRadioGroup"
11 android:layout_width="wrap_content"
12 android:layout_height="wrap_content"
13 app:layout_constraintStart_toStartOf="parent"
14 app:layout_constraintTop_toTopOf="parent">
15
16 <RadioButton
17 android:id="@+id/rbtnMenor18"
18 android:layout_width="match_parent"
19 android:layout_height="wrap_content"
20 android:checked="true"
21 android:text="< 18" />
22
23 <RadioButton
24 android:id="@+id/rbtnMaior18"
25 android:layout_width="match_parent"
26 android:layout_height="wrap_content"
27 android:text=">= 18" />
28
29 </RadioGroup>
30
31 <RadioGroup
32 android:id="@+id/rgrpDeporteFav"
33 android:layout_width="0dp"
34 android:layout_height="wrap_content"
35 android:layout_marginStart="8dp"
36 android:layout_marginTop="16dp"
37 android:layout_marginEnd="8dp"
38 android:checkedButton="@id/rbtnBaloncesto"
39 android:orientation="horizontal"
40 app:layout_constraintEnd_toEndOf="parent"
41 app:layout_constraintStart_toStartOf="parent"
42 app:layout_constraintTop_toBottomOf="@+id/rgrpRadioGroup">
43
44 <RadioButton
45 android:id="@+id/rbtnNatacion"
46 android:layout_width="wrap_content"
47 android:layout_height="wrap_content"
48 android:layout_weight="1"
49 android:text="Natación" />
50
51 <RadioButton
52 android:id="@+id/rbtnBaloncesto"
53 android:layout_width="wrap_content"
54 android:layout_height="wrap_content"
55 android:layout_weight="1"
56 android:text="Baloncesto" />
57
58 <RadioButton
59 android:id="@+id/rbtnTenis"
60 android:layout_width="wrap_content"
61 android:layout_height="wrap_content"
62 android:layout_weight="1"
63 android:text="Tenis" />
64 </RadioGroup>
65
66 </androidx.constraintlayout.widget.ConstraintLayout>
Código Java
- Neste código imos ver como cambiar algunha das propiedades, tanto do RadioButton como do RadioGroup.
1 public class UD02_01_RadioButtons extends AppCompatActivity {
2
3 @Override
4 protected void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.activity_u_d02_01__radio_buttons);
7
8 RadioButton rbtnMenor18 = findViewById(R.id.rbtnMenor18); // Obtemos unha referencia ao RadioButton
9 Toast.makeText(getApplicationContext(),"Estado do rbtnMenor18:" + String.valueOf(rbtnMenor18.isChecked()), Toast.LENGTH_SHORT).show(); // Có método isChecked() sabemos se está seleccionado
10
11 ((RadioButton)findViewById(R.id.rbtnMaior18)).setChecked(true); // Por programación podemos cambiar o estado dun RadioButton. Con setChecked(boolean) cambiamos o estado.
12
13 RadioGroup rgroupDeportes = findViewById(R.id.rgrpDeporteFav); // Obtemos a referencia a un RadioGroup
14 int idRadioButtonSel = rgroupDeportes.getCheckedRadioButtonId(); // getCheckedRadioButtonId() devolve o ID do RadioButton seleccionado no RadioGroup.
15 if (idRadioButtonSel == R.id.rbtnBaloncesto){ // Podemos comparar dito id cos íd´s da clase R.
16 RadioButton rbtnBaloncesto = findViewById(idRadioButtonSel); // A través dese id podemos obter unha referencia ao View (o RadioButton)
17 Toast.makeText(getApplicationContext(),"Está seleccionado o RadioButton de baloncesto", Toast.LENGTH_SHORT).show();
18 rbtnBaloncesto.setBackgroundColor(Color.BLUE); // Podemos cambiar calquera propiedade dese RadioButton
19 }
20
21 ((RadioGroup)findViewById(R.id.rgrpDeporteFav)).check(R.id.rbtnTenis); // Por programación podemos cambiar o RadioButton seleccionado a través do RadioGroup como fixemos graficamente.
22
23 }
24 }
Métodos mínimos a coñecer no manexo dos RadioButton
- Referenciar a un RadioButton - RadioGroup có método findViewById.
- Recuperar o contido do texto asociado a un RadioButton.
- 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,...
- Obter o radiobutton seleccionado.
- Seleccionar un radiobutton concreto.
// Exemplo para obter o id do radiobutton seleccionado. Poderíamos ir comprobando o isChecked de cada uno, pero desta forma é máis rápido
RadioGroup rg = findViewById(R.id.rgrpGrupoBotons);
int idRadioButonSel = rg.getCheckedRadioButtonId(); // Obtemos o id do RadioButton seleccionado
RadioButton rbtnSel = findViewById(idRadioButonSel); // Obtemos a referencia ao View a través do id anterior.
RadioButton rb = findViewById(R.id.rbtnIdaBuscar);
if (rb.isChecked()) { // con isChecked() podemos saber se está seleccionado
// Código a executar no caso de que o radiobutton esté seleccionado.
}
rb.setCheked(true); // Seleccionamos por código un radiobutton concreto.
rb.check(R.id.rbtnID); // Seleccionamos un radiobutton concreto a través do radiogroup.
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).