Switch es un widget que se usa en las aplicaciones de Android para realizar operaciones de dos estados, como encender o apagar. El interruptor proporciona una funcionalidad en la que el usuario puede cambiar la configuración entre encendido y apagado usando el interruptor. En este artículo, veremos cómo crear un interruptor de forma dinámica en Android. A continuación se muestra un video de muestra para tener una idea de lo que vamos a hacer en este artículo.
Nota : este artículo de Android cubre los lenguajes Java y Kotlin .
Implementación paso a paso
Paso 1: crea un nuevo proyecto en Android Studio
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio .
Paso 2: trabajar con el archivo activity_main.xml
Vaya a aplicación > res > diseño > actividad_principal.xml y agréguele el siguiente código. Se agregan comentarios en el código para conocer en detalle.
XML
<?xml version="1.0" encoding="utf-8"?> <!--on below line we are creating our linear layout--> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/idLLContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center" android:gravity="center" android:orientation="vertical" tools:context=".MainActivity"> </LinearLayout>
Paso 3: trabajar con el archivo MainActivity
Vaya a aplicación > java > nombre del paquete de su aplicación > archivo MainActivity y agregue el código a continuación. Se agregan comentarios en el código para conocer en detalle.
Kotlin
package com.gtappdevelopers.kotlingfgproject import android.graphics.Typeface import android.os.Bundle import android.view.Gravity import android.view.ViewGroup import android.widget.LinearLayout import android.widget.Switch import android.widget.TextView import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { // on below line creating a variable. lateinit var containerLL: LinearLayout override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // on below line we are initializing our variables. containerLL = findViewById(R.id.idLLContainer) // on below line we are creating layout // params for text view. // and specifying width as match parent // and height as wrap content val txtLayoutParam = LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT ) // on below line we are creating // our dynamic text view val headingTV = TextView(this) // on below line we are setting // for our text view. headingTV.text = "Dynamic Switch in Android" // on below line we are updating text size. headingTV.textSize = 20f // on below line we are updating text color and font headingTV.setTextColor(resources.getColor(R.color.black)) headingTV.typeface = Typeface.DEFAULT_BOLD // on below line we are adding padding headingTV.setPadding(20, 20, 20, 20) // on below line we are specifying text alignment. headingTV.textAlignment = TextView.TEXT_ALIGNMENT_CENTER // on below line we are adding layout // param for heading text view. headingTV.layoutParams = txtLayoutParam // on below line we are creating // a text view for switch status val statusTV = TextView(this) // on below line we are setting // for our text view. statusTV.text = "Status" // on below line we are updating text size. statusTV.textSize = 20f // on below line we are updating text color and font statusTV.setTextColor(resources.getColor(R.color.black)) statusTV.typeface = Typeface.DEFAULT_BOLD // on below line we are adding padding statusTV.setPadding(20, 20, 20, 20) // on below line we are specifying text alignment. statusTV.textAlignment = TextView.TEXT_ALIGNMENT_CENTER // on below line we are adding layout // param for heading text view. statusTV.layoutParams = txtLayoutParam // on below line we are creating layout params for switch. // and specifying width as wrap parent and height as wrap content val switchLayoutParam = LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT ) // on below line we are adding gravity switchLayoutParam.gravity = Gravity.CENTER // on below line we are adding margins. switchLayoutParam.setMargins(10, 10, 10, 10) // on below line we are creating a new switch val switch = Switch(this) // on below line we are adding layout params for switch switch.layoutParams = switchLayoutParam // on below line we are // checking the status of switch if (switch.isChecked) { // on below line we are setting text // if switch is checked. statusTV.text = "Switch is Checked" } else { // on below line we are setting the // text if switch is un checked statusTV.text = "Switch is UnChecked" } // on below line we are adding check change listener for our switch. switch.setOnCheckedChangeListener { buttonView, isChecked -> // on below line we are checking // if switch is checked or not. if (isChecked) { // on below line we are setting text // if switch is checked. statusTV.text = "Switch is Checked" } else { // on below line we are setting text // if switch is unchecked. statusTV.text = "Switch is UnChecked" } } // on below line we are adding our views // to container linear layout containerLL.addView(headingTV) containerLL.addView(statusTV) containerLL.addView(switch) } }
Java
package com.gtappdevelopers.kotlingfgproject; import android.graphics.Typeface; import android.os.Build; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.Switch; import android.widget.TextView; import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { // on below line we are creating variables. private LinearLayout containerLL; @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // on below line we are initializing our variables. containerLL = findViewById(R.id.idLLContainer); // on below line we are creating layout params for text view. // and specifying width as match parent and height as wrap content LinearLayout.LayoutParams txtLayoutParam = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT ); // on below line we are adding gravity txtLayoutParam.gravity = Gravity.CENTER; // on below line we are creating our dynamic text view TextView headingTV = new TextView(this); // on below line we are setting for our text view. headingTV.setText("Dynamic Switch in Android"); // on below line we are updating text size. headingTV.setTextSize(20f); // on below line we are updating text color and font headingTV.setTextColor(getResources().getColor(R.color.black)); headingTV.setTypeface(Typeface.DEFAULT_BOLD); // on below line we are adding padding headingTV.setPadding(20, 20, 20, 20); // on below line we are specifying text alignment. headingTV.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); // on below line we are adding layout param // for heading text view. headingTV.setLayoutParams(txtLayoutParam); // on below line we are creating our dynamic text view TextView statusTV = new TextView(this); // on below line we are setting // for our text view. statusTV.setText("Status"); // on below line we are // updating text size. statusTV.setTextSize(20f); // on below line we are updating text color and font statusTV.setTextColor(getResources().getColor(R.color.black)); statusTV.setTypeface(Typeface.DEFAULT_BOLD); // on below line we are adding padding statusTV.setPadding(20, 20, 20, 20); // on below line we are specifying text alignment. statusTV.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); // on below line we are adding layout param // for heading text view. statusTV.setLayoutParams(txtLayoutParam); // on below line we are creating layout params for switch. // and specifying width as wrap parent and height as wrap content LinearLayout.LayoutParams switchLayoutParam = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT ); // on below line we are adding gravity switchLayoutParam.gravity = Gravity.CENTER; // on below line we are adding margins. switchLayoutParam.setMargins(10, 10, 10, 10) // on below line we are creating a new switch Switch switchView = new Switch(this); // on below line we are adding // layout params for switch switchView.setLayoutParams(switchLayoutParam); // on below line we are checking // the status of switch if (switchView.isChecked()) { // on below line we are setting text // if switch is checked. statusTV.setText("Switch is Checked"); } else { // on below line we are setting the text // if switch is un checked statusTV.setText("Switch is UnChecked"); } // on below line we are adding check change listener for our switch. switchView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // on below line we are checking // if switch is checked or not. if (isChecked) { // on below line we are setting text // if switch is checked. statusTV.setText("Switch is Checked"); } else { // on below line we are setting text // if switch is unchecked. statusTV.setText("Switch is UnChecked"); } } }); } }
Ahora ejecute su aplicación para ver el resultado.
Producción:
Publicación traducida automáticamente
Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA