📜  Kotlin 中的动态切换

📅  最后修改于: 2022-05-13 01:55:05.648000             🧑  作者: Mango

Kotlin 中的动态切换

Android Switch 也是一个两态用户界面元素,用于在 ON 和 OFF 之间切换为按钮。通过触摸按钮,我们可以前后拖动它以使其打开或关闭。
当活动只有两种状态需要选择 ON 或 OFF 时,Switch 元素很有用。我们可以使用 Switch 对象将 Switch 添加到我们的应用程序布局中。默认情况下,android Switch 的状态为 OFF 状态。我们还可以通过在 XML 布局文件中设置 android:checked = “true” 将 Switch 的状态更改为 ON。
在 android 中,我们可以通过两种方式创建 Switch 控件,一种是在 XML 布局文件中使用 Switch,另一种是在 Kotlin 文件中动态创建它。
首先,我们按照以下步骤创建一个新项目:

  1. 单击文件,然后单击新建=>新建项目
  2. 之后包括 Kotlin 支持,然后单击下一步。
  3. 根据方便选择最小的 SDK,然后单击下一步按钮。
  4. 然后选择Empty activity => next => finish

activity_main.xml 文件中的 LinearLayout

在这个文件中,我们使用了 LinearLayout 并且不能手动添加 switch 小部件,因为它将在 Kotlin 文件中动态创建。

XML


 


XML

    DynamicSwitchInKotlin


Kotlin
package com.geeksforgeeks.myfirstkotlinapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.Switch
import android.widget.Toast
 
class MainActivity : AppCompatActivity() {
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        // Creating switch1 and switch2 programmatically
        val switch1 = Switch(this)
        val layoutParams = LinearLayout.LayoutParams(ViewGroup.
            LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
        switch1.layoutParams = layoutParams
        switch1.text = "Switch1"
 
 
        val switch2 = Switch(this)
        val layoutParams2 = LinearLayout.LayoutParams(ViewGroup.
            LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
        switch2.layoutParams = layoutParams2
        switch2.text = "Switch2"
 
        val linearLayout = findViewById(R.id.rootContainer)
        // Adding Switches to LinearLayout
        linearLayout?.addView(switch1)
        linearLayout?.addView(switch2)
 
        switch1.setOnCheckedChangeListener { buttonView, isChecked ->
            val msg = if (isChecked) "SW1:ON" else "SW1:OFF"
            Toast.makeText(this@MainActivity, msg,
                Toast.LENGTH_SHORT).show()
        }
 
        switch2.setOnCheckedChangeListener { buttonView, isChecked ->
            val msg = if (isChecked) "SW2:ON" else "SW2:OFF"
            Toast.makeText(this@MainActivity, msg,
                Toast.LENGTH_SHORT).show()
        }
    }
}


XML


 

    
        
            
 
            
        
    

 


在字符串.xml 文件中添加应用程序名称
在这里,我们可以将应用程序中可以使用的所有字符串放在任何文件中。因此,我们更新了可以在活动顶部看到的 app_name。

XML


    DynamicSwitchInKotlin

在 MainActivity.kt 文件中以编程方式创建开关

在这里,我们通过调用linearLayout来初始化和定义两个开关并动态添加。

linearLayout?.addView(switch1)
linearLayout?.addView(switch2)

然后,在两个开关上设置OnClickListener以实现按钮切换和 Toast 消息等功能。

switch1.setOnCheckedChangeListener { buttonView, isChecked ->
            val msg = if (isChecked) "SW1:ON" else "SW1:OFF"
            Toast.makeText(this@MainActivity, msg,
                Toast.LENGTH_SHORT).show()
        }

Kotlin 文件的完整代码如下。

科特林

package com.geeksforgeeks.myfirstkotlinapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.Switch
import android.widget.Toast
 
class MainActivity : AppCompatActivity() {
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        // Creating switch1 and switch2 programmatically
        val switch1 = Switch(this)
        val layoutParams = LinearLayout.LayoutParams(ViewGroup.
            LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
        switch1.layoutParams = layoutParams
        switch1.text = "Switch1"
 
 
        val switch2 = Switch(this)
        val layoutParams2 = LinearLayout.LayoutParams(ViewGroup.
            LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
        switch2.layoutParams = layoutParams2
        switch2.text = "Switch2"
 
        val linearLayout = findViewById(R.id.rootContainer)
        // Adding Switches to LinearLayout
        linearLayout?.addView(switch1)
        linearLayout?.addView(switch2)
 
        switch1.setOnCheckedChangeListener { buttonView, isChecked ->
            val msg = if (isChecked) "SW1:ON" else "SW1:OFF"
            Toast.makeText(this@MainActivity, msg,
                Toast.LENGTH_SHORT).show()
        }
 
        switch2.setOnCheckedChangeListener { buttonView, isChecked ->
            val msg = if (isChecked) "SW2:ON" else "SW2:OFF"
            Toast.makeText(this@MainActivity, msg,
                Toast.LENGTH_SHORT).show()
        }
    }
}

AndroidManifest.xml 文件

XML



 

    
        
            
 
            
        
    

 

作为输出模拟器运行: