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