Cambio dinámico en Android

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *