📜  带有示例的Android中的Dynamic CheckBox

📅  最后修改于: 2021-05-08 21:05:01             🧑  作者: Mango

Android为用户交互提供了各种各样的小部件,而CheckBox就是其中之一。 CheckBox是一种特殊的按钮,具有两种状态,可以选中或取消选中。它们是一个简单的工具,可以轻松地从用户那里收集信息。它们通常用于将事物标记为由用户在任务管理应用程序中完成。

在某些情况下,我们可能不知道要在构建时显示的小部件的所有属性,因此可能必须动态分配这些值。值得庆幸的是,Android支持在运行时创建窗口小部件。让我们看看如何在Kotlin中而不是在构建时动态创建CheckBox。

方法

步骤1:建立新专案

要在android studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。

步骤2:修改activity_main.xml

在可以动态添加CheckBox之前,需要预先定义布局以容纳CheckBox。为了使应用程序简单,请为演示应用程序选择一个覆盖整个屏幕的线性布局。

XML

  


  


XML

   GFG | Dynamic Checkbox Demo
   TODO: Become A Geek


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(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)
    }   
}


步骤3:向字符串.xml添加字符串

最佳实践是不使用硬编码的字符串,让我们在应用程序中进行相同的操作。

XML格式


   GFG | Dynamic Checkbox Demo
   TODO: Become A Geek

可以使用以下命令在MainActivity.kt文件中引用此字符串:

getString(R.string.geek_message)

步骤4:使用MainActivity.kt文件

从MainActivity.kt文件中引用布局。可以使用以下代码行完成此操作:

现在,在MainActivity.kt文件中创建一个新的CheckBox并设置其布局参数。必须使用布局参数,因为它们描述CheckBox将如何与布局交互。

设置侦听器以在用户切换CheckBox时显示Toast消息。最后,使用下面的代码行将创建的CheckBox添加到布局中。

科特林

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(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)
    }   
}

输出:

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!