Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Controles Básicos
En Android, Button es un control de interfaz de usuario que se utiliza para realizar una
acción cada vez que el usuario hace clic o toca en él.
En general, los botones en Android contendrán un texto o un icono o ambos y realizarán
una acción cuando el usuario lo toque.
A continuación, se muestra la representación gráfica del uso de botones en aplicaciones de
Android.
En Android, tenemos un tipo diferente de botones disponibles para usar según nuestros
requisitos, esos son ImageButton, ToggleButton, RadioButton.
En Android, podemos crear un control de botón de dos maneras, ya sea en un archivo de
layout XML o crearlo en el archivo Activity mediante programación.
1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2. android:orientation="vertical" android:layout_width="match_parent"
3. android:layout_height="match_parent">
4. <Button
5. android:id="@+id/addBtn"
6. android:layout_width="wrap_content"
7. android:layout_height="wrap_content"
8. android:text="Add" />
9. </LinearLayout>
Dentro de la Actividad que aloja este diseño, el siguiente método maneja el evento click:
• Ser public
• Return void
• Definir un View como su único parámetro (esta será la View en la que se hizo clic)
Usando un OnClickListener
También puede declarar el controlador de eventos de clic mediante programación en lugar
de hacerlo en un diseño XML. Esto podría ser necesario si crea una instancia del Botón en
tiempo de ejecución o si necesita declarar el comportamiento del clic en una subclase de
Fragmento.
Para declarar el controlador de eventos mediante programación, cree un objeto
View.OnClickListener y asígnelo al botón llamando a setOnClickListener
(View.OnClickListener). Por ejemplo:
1. package com.uaa.controlesbasicos
2.
3. import androidx.appcompat.app.AppCompatActivity
4. import android.os.Bundle
5. import android.util.Log
6. import android.widget.Toast
7. import kotlinx.android.synthetic.main.button_control.*
8.
9. class MainActivity : AppCompatActivity() {
10.
11. override fun onCreate(savedInstanceState: Bundle?) {
12. super.onCreate(savedInstanceState)
13. setContentView(R.layout.button_control)
14.
15.
16. btn_suma.setOnClickListener {
17. if (et_primer_numero.text.isEmpty() || et_primer_numero.text.isEmpty()
) {
18. Toast.makeText(
19. applicationContext,
20. "Por favor ingresa todos los campos",
21. Toast.LENGTH_SHORT
22. ).show()
23. } else {
24. try {
25. val num1 = et_primer_numero.text.toString().toDouble()
26. val num2 = et_segundo_numero.text.toString().toDouble()
27. Toast.makeText(
28. applicationContext,
29. "Suma = ${num1 + num2}",
30. Toast.LENGTH_SHORT
31. ).show()
32. } catch (e:NumberFormatException) {
33. Toast.makeText(
34. applicationContext,
35. "Por favor ingrese solo numeros",
36. Toast.LENGTH_SHORT
37. ).show()
38. Log.println(Log.ERROR,"Error:",e.toString())
39. }
40.
41. }
42. }
43. }
44. }
Resultado de la Aplicación
ToggleButton
• ToggleButton
• Switch
• SwitchCompat
• CompoundButton
En general, cada vez que el usuario hace clic en ToggleButton, podemos detectar si
ToggleButton está en estado ON u OFF y podemos manejar el evento de clic
ToggleButton en el archivo de actividad usando setOnCheckedChangeListener como se
muestra a continuación.
Los siguientes son algunos de los atributos comúnmente utilizados relacionados con el
control ToggleButton en aplicaciones de Android.
Atributo Descripción
android:id Se utiliza para identificar de forma exclusiva el control.
android:checked Se utiliza para especificar el estado actual del botón de alternar
android:gravedad Se utiliza para especificar cómo alinear el texto como izquierda,
derecha, centro, arriba, etc.
android:texto Se usa para establecer el texto.
android:textOn Se utiliza para configurar el texto cuando el botón de alternancia
está en estado ON / Checked.
android:textOff Se utiliza para configurar el texto cuando el botón de alternar está
en estado DESACTIVADO / Sin marcar.
android:textColor Se usa para cambiar el color del texto.
android:textSize Se utiliza para especificar el tamaño del texto.
android:textStyle Se utiliza para cambiar el estilo (negrita, cursiva, negrita) del texto.
android:fondo Se utiliza para establecer el color de fondo para el control del botón
de alternar.
android:relleno Se utiliza para configurar el relleno desde la izquierda, derecha,
arriba y abajo.
android:drawableBottom Se puede dibujar en el siguiente texto.
android: drawableRight Se puede dibujar a la derecha del texto.
android: drawableLeft Se puede dibujar a la izquierda del texto.
Ejemplo del control ToggleButton en Android
1. package com.uaa.controlesbasicos
2.
3. import androidx.appcompat.app.AppCompatActivity
4. import android.os.Bundle
5. import android.util.Log
6. import android.widget.Toast
7. import kotlinx.android.synthetic.main.toggle_button_control.*
8.
9.
10. class MainActivity : AppCompatActivity() {
11.
12. override fun onCreate(savedInstanceState: Bundle?) {
13. super.onCreate(savedInstanceState)
14. setContentView(R.layout.toggle_button_control)
15.
16.
17.
18. tg_btn_1.setOnCheckedChangeListener { _, isChecked ->
19. if (isChecked) {
20. // The toggle is enabled
21. Toast.makeText(
22. applicationContext,
23. "Toggle Button1 Cambio a ON",
24. Toast.LENGTH_SHORT
25. ).show()
26. } else {
27. // The toggle is disabled
28. Toast.makeText(
29. applicationContext,
30. "Toggle Button1 Cambio a OFF",
31. Toast.LENGTH_SHORT
32. ).show()
33. }
34. }
35.
36.
37. tg_btn_2.setOnCheckedChangeListener { _, isChecked ->
38. if (isChecked) {
39. // The toggle is enabled
40. Toast.makeText(
41. applicationContext,
42. "Toggle Button2 Cambio a ON",
43. Toast.LENGTH_SHORT
44. ).show()
45. } else {
46. // The toggle is disabled
47. Toast.makeText(
48. applicationContext,
49. "Toggle Button2 Cambio a OFF",
50. Toast.LENGTH_SHORT
51. ).show()
52. }
53. }
54.
55.
56. btn_enviar.setOnClickListener {
57. Toast.makeText(
58. applicationContext,
59. "Toggle Button1 - ${tg_btn_1.text} \n Toggle Button2 - ${tg_btn_2
.text}",
60. Toast.LENGTH_LONG
61. ).show();
62. }
63. }
Resultado de la Aplicación
ImageButton
1. <LinearLayout
2. android:layout_width="match_parent"
3. android:layout_height="match_parent"
4. android:orientation="horizontal">
5.
6. <ImageButton
7. android:id="@+id/imageButton"
8. android:layout_width="wrap_content"
9. android:layout_height="wrap_content"
10. android:layout_weight="1"
11. android:background="@android:color/transparent"
12. android:textAlignment="center"
13. app:srcCompat="@android:drawable/ic_menu_add" />
14.
15. </LinearLayout>
1. package com.uaa.myapplication
2.
3. import androidx.appcompat.app.AppCompatActivity
4. import android.os.Bundle
5. import android.view.View
6. import android.widget.Toast
7. import kotlinx.android.synthetic.main.activity_main.*
8. import android.view.ViewGroup
9. import android.widget.Button
10. import android.widget.LinearLayout
11. import androidx.core.content.ContextCompat
12. import kotlin.random.Random
13. import androidx.core.app.ComponentActivity
14. import androidx.core.app.ComponentActivity.ExtraData
15. import androidx.core.content.ContextCompat.getSystemService
16. import android.icu.lang.UCharacter.GraphemeClusterBreak.T
17.
18.
19. class MainActivity : AppCompatActivity() {
20.
21. var index = 0
22. var buttons = arrayListOf<Button>()
23. var iconos = arrayOf(
24. android.R.drawable.ic_menu_add,
25. android.R.drawable.ic_delete,
26. android.R.drawable.ic_menu_compass,
27. android.R.drawable.ic_dialog_alert,
28. android.R.drawable.ic_dialog_email,
29. android.R.drawable.ic_input_delete,
30. android.R.drawable.ic_input_add,
31. android.R.drawable.ic_btn_speak_now,
32. android.R.drawable.ic_input_get,
33. android.R.drawable.ic_dialog_info,
34. android.R.drawable.ic_lock_lock,
35. android.R.drawable.ic_menu_close_clear_cancel
36. )
37.
38. override fun onCreate(savedInstanceState: Bundle?) {
39. super.onCreate(savedInstanceState)
40. setContentView(R.layout.activity_main)
41.
42.
43. btnRemove.setOnClickListener() {
44. for (button in buttons) {
45. (button.parent as ViewGroup).removeView(button)
46. }
47. buttons.clear()
48. Toast.makeText(
49. applicationContext,
50. "Se eliminaron todos los botones",
51. Toast.LENGTH_SHORT
52. ).show()
53. }
54.
55. }
56.
57. public fun addOperation(view: View) {
58. var button: Button = Button(this)
59. val drawable =
60. ContextCompat.getDrawable(applicationContext, iconos[Random.nextInt(0,
iconos.size)])
61. button.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
1. package com.uaa.myapplication
2.
3. import androidx.appcompat.app.AppCompatActivity
4. import android.os.Bundle
5. import android.widget.LinearLayout
6. import android.widget.TextView
7.
8. class MainActivity : AppCompatActivity() {
9. override fun onCreate(savedInstanceState: Bundle?) {
10. super.onCreate(savedInstanceState)
11. setContentView(R.layout.activity_main)
12.
13. val linearLayout = findViewById<LinearLayout>(R.id.mainLayout)
14. val textView = TextView(this)
15. textView.text = "Hello World"
16. linearLayout.addView(textView)
17. }
18. }
Los siguientes son algunos de los atributos comúnmente utilizados relacionados con el
control TextView en aplicaciones de Android.
Atributo Descripción
android:id Se utiliza para identificar de forma exclusiva el control.
1. package com.uaa.myapplication
2.
3. import androidx.appcompat.app.AppCompatActivity
4. import android.os.Bundle
5. import android.widget.TextView
6.
7. class MainActivity : AppCompatActivity() {
8. override fun onCreate(savedInstanceState: Bundle?) {
9. super.onCreate(savedInstanceState)
10. setContentView(R.layout.activity_main)
11.
12. setContentView(R.layout.activity_main)
13. val tv = findViewById<TextView>(R.id.textView2)
14. tv.text = "Hello World!"
15. }
16. }
Resultado de la Aplicación
EditText
1. package com.uaa.myapplication
2.
3. import androidx.appcompat.app.AppCompatActivity
4. import android.os.Bundle
5. import android.widget.EditText
6.
7. class MainActivity : AppCompatActivity() {
8. override fun onCreate(savedInstanceState: Bundle?) {
9. super.onCreate(savedInstanceState)
10. setContentView(R.layout.activity_main)
11.
12. val et = findViewById<EditText>(R.id.txtSub)
13. val name = et.text.toString()
14. }
15. }
1. package com.uaa.myapplication
2.
3. import androidx.appcompat.app.AppCompatActivity
4. import android.os.Bundle
5. import kotlinx.android.synthetic.main.activity_main.*
6.
7. class MainActivity : AppCompatActivity() {
8. override fun onCreate(savedInstanceState: Bundle?) {
9. super.onCreate(savedInstanceState)
10. setContentView(R.layout.activity_main)
11. btnSend.setOnClickListener {
12. if (txtName.text.toString().isEmpty() || txtPwd.text.toString().isEmpt
y() || txtEmai.text.toString().isEmpty() || txtDate.text.toString().isEmpty()
13. || txtPhone.text.toString().isEmpty()
14. ) {
15. resultView.setText("Please Fill All the Details")
16. } else {
17. resultView.setText(
18. "Name - " + txtName.text.toString() + " \n" + "Password - "
+ txtPwd.text.toString()
19. + " \n" + "E-
Mail - " + txtEmai.text.toString() + " \n" + "DOB - " + txtDate.text.toString()
En Android, CheckBox es un botón de dos estados que se puede marcar (ON) o desmarcar
(OFF) y permitirá a los usuarios alternar entre los dos estados (ON / OFF) según los
requisitos.
Por defecto, el Android CheckBox estará en estado OFF (Unchecked). Podemos cambiar
el estado predeterminado de CheckBox usando el atributo android:checked.
1. package com.uaa.myapplication
2.
3. import androidx.appcompat.app.AppCompatActivity
4. import android.os.Bundle
5. import android.widget.CheckBox
6. import android.widget.RelativeLayout
7.
8. class MainActivity : AppCompatActivity() {
9. override fun onCreate(savedInstanceState: Bundle?) {
10. super.onCreate(savedInstanceState)
11. setContentView(R.layout.activity_main)
12. val layout = findViewById<RelativeLayout>(R.id.mainLayout)
13. val cb = CheckBox(this)
14. cb.text = "Java"
15. cb.isChecked = true
16. layout.addView(cb)
17. }
18. }
En general, cada vez que el usuario hace clic en CheckBox para seleccionar o anular la
selección del objeto CheckBox recibirá un evento de clic.
El valor del atributo android:onClick debe ser el nombre del método al que debemos llamar
en respuesta a un evento de clic y el archivo de actividad que aloja el diseño XML debe
implementar el método correspondiente.
Así es como podemos manejar los eventos de clic de CheckBox en aplicaciones de Android
según nuestros requisitos.
Atributos de control de Android CheckBox
Los siguientes son algunos de los atributos comúnmente utilizados relacionados con el
control CheckBox en aplicaciones de Android.
Atributo Descripción
android:id Se utiliza para identificar de forma exclusiva el control.
android:textStyle Se utiliza para cambiar el estilo (negrita, cursiva, negrita) del texto.
1. package com.uaa.myapplication
2.
3. import androidx.appcompat.app.AppCompatActivity
4. import android.os.Bundle
5. import android.view.View
6. import android.widget.CheckBox
7. import android.widget.Toast
8. import kotlinx.android.synthetic.main.activity_main.*
9.
10.
11. class MainActivity : AppCompatActivity() {
12. override fun onCreate(savedInstanceState: Bundle?) {
13. super.onCreate(savedInstanceState)
14. setContentView(R.layout.activity_main)
15. btn_detalles.setOnClickListener {
16. var mensaje = "Lenguajes Seleccionados:"
17. if(chkAndroid.isChecked()){
18. mensaje += "\nAndroid"
19. }
20. if(chkAngular.isChecked()){
21. mensaje += "\nAngularJS";
22. }
23. if(chkJava.isChecked()){
24. mensaje += "\nJava";
25. }
26. if(chkPython.isChecked()){
27. mensaje += "\nPython";
28. }
29. Toast.makeText(applicationContext, mensaje, Toast.LENGTH_SHORT).sh
ow();
30. }
31. }
32. public fun onCheckboxClicked(view: View) {
33. var checked = ( view as CheckBox).isChecked()
34. var mensaje=""
35. // Check which checkbox was clicked
36. when(view.id) {
37. chkAndroid.id ->
38. mensaje = if(checked){"Android Seleccionado"} else {"Android Deselecci
onado"}
39.
40. chkAngular.id ->
41. mensaje = if(checked){"AngularJS Seleccionado"} else {"AngularJS Desel
eccionado"}
42.
43. chkJava.id ->
44. mensaje = if(checked){"Java Seleccionado" }else {"Java Deseleccionado"
}
45.
46. chkPython.id ->
47. mensaje = if(checked){"Python Seleccionado"} else {"Python Deseleccion
ado"}
48.
49. }
50. Toast.makeText(applicationContext, mensaje, Toast.LENGTH_SHORT).show();
51. }
52. }
Resultado de la Aplicación
RadioButton
android:textStyle Se utiliza para cambiar el estilo (negrita, cursiva, negrita) del texto.
android:background Se utiliza para establecer el color de fondo para el control del botón de
radio.
android:onClick Es un nombre del método para invocar cuando se hace clic en el botón
de opción.
1. package com.uaa.myapplication
2.
3. import androidx.appcompat.app.AppCompatActivity
4. import android.os.Bundle
5. import android.view.View
6. import android.widget.RadioButton
7. import android.widget.Toast
8. import kotlinx.android.synthetic.main.activity_main.*
9.
10. class MainActivity : AppCompatActivity() {
11. override fun onCreate(savedInstanceState: Bundle?) {
12. super.onCreate(savedInstanceState)
13. setContentView(R.layout.activity_main)
14. getBtn.setOnClickListener {
15. var mensaje = "Courso Seleccionado: "
16. mensaje +=
17. when {
18. rdbAndroid.isChecked -> "Android"
19. rdbAngular.isChecked -> "AngularJS"
20. rdbJava.isChecked -> "Java"
21. rdbPython.isChecked -> "Python"
22. else -> ""
23. }
24. Toast.makeText(applicationContext, mensaje, Toast.LENGTH_SHORT).show()
25. }
26. }
27.
28. public fun onRadioButtonClicked(view: View) {
29. var checked = (view as RadioButton).isChecked
30. var mensaje = ""
31. // Check which checkbox was clicked
32. mensaje = when (view.id) {
33. rdbAndroid.id -> "Android Seleccionado"
34. rdbAngular.id -> "AngularJS Seleccionado"
35. rdbJava.id -> "Java Seleccionado"
36. rdbPython.id -> "Python Seleccionado"
37. else -> ""
38. }
39. Toast.makeText(applicationContext, mensaje, Toast.LENGTH_SHORT).show();
40. }
41.
42. }
Resultado de la Aplicación
ImageView
Nota importante: ImageView viene con diferentes opciones de configuración para admitir
diferentes tipos de escala. Las opciones de tipo de escala se utilizan para escalar los límites
de una imagen a los límites de la vista de imagen. Algunas de las propiedades de
configuración de scaleTypes son center, center_crop, fit_xy, fitStart, etc. Mas adelante
veremos un poco más acerca del atributo ScaleType para conocer su utilidad.
En Android, podemos crear el control ImageView de dos maneras, ya sea en un archivo de
diseño XML o crearlo en el archivo de actividad mediante programación.
Crear ImageView en archivo de diseño XML
La siguiente es la forma de ejemplo para definir el control ImageView en el archivo de
diseño XML en la aplicación de Android.
1. <ImageView
2. android:id="@+id/simpleImageView"
3. android:layout_width="match_parent"
4. android:layout_height="wrap_content"
5. android:src="@drawable/android" />
1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2. xmlns:tools="http://schemas.android.com/tools"
3. android:layout_width="match_parent"
4. android:layout_height="match_parent"
5. android:layout_margin="20dp"
6. tools:context=".MainActivity">
7.
8. <ImageView
9. android:id="@+id/simpleImageViewPerrito"
10. android:layout_width="match_parent"
11. android:layout_height="250dp"
12. android:scaleType="fitXY"
13. android:src="@drawable/perrito" />
14.
15. <ImageView
16. android:id="@+id/simpleImageViewGatito"
17. android:layout_width="match_parent"
18. android:layout_height="250dp"
19. android:layout_below="@+id/simpleImageViewPerrito"
20. android:layout_marginTop="10dp"
21. android:scaleType="fitXY"
22. android:src="@drawable/gatito" />
23.
24. </RelativeLayout>
1. package com.uaa.myapplication
2.
3. import androidx.appcompat.app.AppCompatActivity
4. import android.os.Bundle
5. import android.widget.Toast
6. import kotlinx.android.synthetic.main.activity_main.*
7.
8. class MainActivity : AppCompatActivity() {
9. override fun onCreate(savedInstanceState: Bundle?) {
10. super.onCreate(savedInstanceState)
11. setContentView(R.layout.activity_main)
12.
13. simpleImageViewPerrito.setOnClickListener {
14. Toast.makeText(applicationContext, "Perrito", Toast.LENGTH_SHORT)
15. .show()//display the text on image click event
16. }
17. simpleImageViewGatito.setOnClickListener {
18. Toast.makeText(applicationContext, "Gatito", Toast.LENGTH_SHORT)
19. .show()//display the text on image click event
20. }
21. }
22. }
Resultado de la Aplicación
Referencias
1. https://developer.android.com/guide/topics/ui/look-and-feel/themes
2. https://developer.android.com/guide/topics/ui/controls/button
3. https://developer.android.com/guide/topics/ui/controls/checkbox
4. https://developer.android.com/guide/topics/ui/controls/radiobutton
5. https://developer.android.com/guide/topics/ui/controls/radiobutton
6. https://developer.android.com/reference/android/widget/TextView
7. https://developer.android.com/reference/android/widget/EditText
8. https://developer.android.com/reference/android/widget/ImageView
9. https://developer.android.com/reference/android/widget/ImageView.ScaleType