En esta entrada voy a mostrar los diferentes eventos click que se pueden realizar en Android con Kotlin. Se pueden implementar de 3 formas:
- A través del XML
- Llamando a setOnClickListener
- Implementar OnClickListener como interfaz
Antes de poner el código he de decir que he utilizado los botones de tipo Material Button que se implementan en las nuevas versiones de Android. Para saber como poder ejecutar esta aplicacion sin nigun tipo de problemas os aconsejaría seguir los pasos de la pagina Material Design. Si surge cualquier problema podéis poner un comentario y os ayudaré en todo lo que pueda
Diseño
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<?xml version="1.0" encoding="utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="wrap_content" tools:context=".MainActivity" android:layout_gravity="center_vertical" android:padding="40dp"> <com.google.android.material.button.MaterialButton android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@color/buttonColor" app:cornerRadius="16dp" android:onClick="onClickXML" android:text="@string/btnXML" android:id="@+id/buttonXML"/> <com.google.android.material.button.MaterialButton android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@color/buttonColor" android:id="@+id/buttonLine" app:cornerRadius="16dp" android:text="@string/btnLine" android:layout_marginTop="40dp"/> <com.google.android.material.button.MaterialButton android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@color/buttonColor" android:text="@string/btnMulti" android:id="@+id/buttonMulti" app:cornerRadius="16dp" android:layout_marginTop="40dp"/> <com.google.android.material.button.MaterialButton android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@color/buttonColor" android:text="@string/btnMulti2" android:id="@+id/buttonMulti2" app:cornerRadius="16dp" android:layout_marginTop="40dp"/> </androidx.appcompat.widget.LinearLayoutCompat> |
Código
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
package com.albrivas.eventclicks import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Button import android.widget.Toast import com.google.android.material.button.MaterialButton class MainActivity : AppCompatActivity(), View.OnClickListener { private lateinit var btnXML : MaterialButton private lateinit var btnLine : MaterialButton private lateinit var btnMulti : MaterialButton private lateinit var btnMulti2 : MaterialButton override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) instancias() acciones() // Hay que llamarlo aqui para poder ejecutarlo onCLickLine() } private fun acciones() { btnMulti.setOnClickListener(this) btnMulti2.setOnClickListener(this) } private fun instancias() { btnXML = findViewById(R.id.buttonXML) btnLine = findViewById(R.id.buttonLine) btnMulti = findViewById(R.id.buttonMulti) btnMulti2 = findViewById(R.id.buttonMulti2) } // La funcion debe ser publica y hay que pasarle un solo parametro de tipo View fun onClickXML(view : View) { sendMessage("Boton XML pulsado") } private fun onCLickLine(){ btnLine.setOnClickListener { sendMessage("Boton In Line pulsado") } } // Implementado como interfaz override fun onClick(v: View) { when(v.id) { R.id.buttonMulti -> sendMessage("Boton multiline pulsado") R.id.buttonMulti2 -> sendMessage("Boton multiline 2 pulsado") } } private fun sendMessage(message: String) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show() } } |
A continuación os dejo el repositorio del que podéis descargar todo el proyecto