Динамический переключатель в Android
Переключатель — это виджет, используемый в приложениях для Android для выполнения операций с двумя состояниями, таких как включение или выключение. Переключатель обеспечивает функциональность, при которой пользователь может переключать настройки между включением и выключением с помощью переключателя. В этой статье мы рассмотрим, как динамически создать переключатель в Android. Пример видео приведен ниже, чтобы получить представление о том, что мы собираемся делать в этой статье.
Note: This Android article covered in both Java and Kotlin languages.
Пошаговая реализация
Шаг 1. Создайте новый проект в Android Studio.
Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio».
Шаг 2: Работа с файлом activity_main.xml
Перейдите к app > res > layout > activity_main.xml и добавьте в него приведенный ниже код. В код добавлены комментарии для более подробного ознакомления.
XML
<? xml version = "1.0" encoding = "utf-8" ?> <!--on below line we are creating our linear layout--> < LinearLayout 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 > |
Шаг 3: Работа с файлом MainActivity
Перейдите к приложению > java > имени пакета вашего приложения > файлу MainActivity и добавьте приведенный ниже код. В код добавлены комментарии для более подробного ознакомления.
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" ); } } }); } } |
Теперь запустите ваше приложение, чтобы увидеть результат.
Выход: