Dynamische CheckBox in Android mit Beispielen
Android bietet eine Vielzahl von Widgets für Benutzerinteraktionen und CheckBox ist eines davon. CheckBox ist eine spezielle Art von Schaltfläche mit zwei Zuständen, die entweder aktiviert oder deaktiviert sein können. Sie dienen als einfaches Werkzeug, um ohne großen Aufwand Informationen vom Benutzer zu sammeln. Sie werden im Allgemeinen verwendet, um Dinge in Aufgabenverwaltungsanwendungen vom Benutzer als erledigt zu markieren.
Es können Situationen auftreten, in denen wir möglicherweise nicht alle Eigenschaften des Widgets kennen, die zur Erstellungszeit angezeigt werden sollen, und diese Werte möglicherweise dynamisch zuweisen müssen. Glücklicherweise unterstützt Android das Erstellen von Widgets zur Laufzeit. Sehen wir uns an, wie Sie eine CheckBox dynamisch in Kotlin und nicht zur Build-Zeit erstellen .
Sich nähern
Schritt 1: Erstellen eines neuen Projekts
Informationen zum Erstellen eines neuen Projekts in Android Studio finden Sie unter Erstellen/Starten eines neuen Projekts in Android Studio.
Schritt 2: Activity_main.xml ändern
Bevor eine CheckBox dynamisch hinzugefügt werden kann, muss zuvor ein Layout definiert werden, das die CheckBox enthält. Um die Anwendung einfach zu halten, wählen Sie für die Demoanwendung ein lineares Layout, das den gesamten Bildschirm abdeckt.
XML
<?xml version="1.0" encoding="utf-8"?> <!--This LinearLayout will serve as the root container to hold the checkbox It will fully occupy the device screen and will place the checkbox at its center--> <LinearLayout android:id="@+id/root_layout" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center"> </LinearLayout>
Schritt 3: Hinzufügen einer Zeichenfolge zu strings.xml
Es hat sich bewährt, keine hartcodierten Zeichenfolgen zu verwenden, und wir machen dasselbe in der Anwendung.
XML
<resources> <string name="app_name">GFG | Dynamic Checkbox Demo</string> <string name="geek_message">TODO: Become A Geek</string> </resources>
Auf diese Zeichenfolge kann in der Datei MainActivity.kt verwiesen werden mit:
getString(R.string.geek_message)
Schritt 4: Arbeiten mit der Datei MainActivity.kt
Verweisen Sie auf das Layout aus der Datei MainActivity.kt. Dies könnte mit der folgenden Codezeile geschehen:
val layout = findViewById<LinearLayout>(R.id.root_layout)
Erstellen Sie nun eine neue CheckBox in der Datei MainActivity.kt und legen Sie deren Layoutparameter fest. Die Layoutparameter werden zwingend benötigt, da sie beschreiben, wie die CheckBox mit dem Layout interagiert.
val geekBox = CheckBox(this)
geekBox.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
Richten Sie einen Listener ein, um eine Toast - Nachricht anzuzeigen, wenn die CheckBox vom Benutzer umgeschaltet wird. Fügen Sie schließlich die erstellte CheckBox mit der folgenden Codezeile zum Layout hinzu.
layout.addView (GeekBox)
Kotlin
package org.geeksforgeeks.dynamic_checkbox import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.ViewGroup import android.widget.CheckBox import android.widget.LinearLayout import android.widget.Toast class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // References the root LinearLayout from // the activity_main layout file val layout = findViewById<LinearLayout>(R.id.root_layout) // Create a new Checkbox at run-time val geekBox = CheckBox(this) // Define the layout properties and text for our check box geekBox.layoutParams = LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) geekBox.text = getString(R.string.geek_message) // Set-up a listener to show a Toast message when // the check box is toggled. geekBox.setOnCheckedChangeListener{ _, isChecked -> Toast.makeText(this, if (isChecked) "Congratulations!" + "You Are A Geek Now" else "Don't Give Up", Toast.LENGTH_SHORT).show() } // Add our created check box to the root // layout for it to be displayed layout.addView(geekBox) } }