📜  如何在 Android 中创建自定义开关按钮?

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

如何在 Android 中创建自定义开关按钮?

在 Android 中,Switch 是一种按钮,允许用户在两个操作或实例之间切换。通常,Switch 用于在可以调用任何操作或功能的两个选项之间进行选择。示例 Switch 如下图所示。下面给出了一个示例视频,以了解我们将在本文中做什么。请注意,我们将使用Kotlin语言来实现这个项目。

在本文中,我们将向您展示如何自定义 Switch 以在 Android 中更好地显示。 IDE 准备就绪后,请按照以下步骤操作。

分步实施

第 1 步:在 Android Studio 中创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。我们在Kotlin中演示了该应用程序,因此请确保在创建新项目时选择 Kotlin 作为主要语言。

第二步:创建custom_switch.xml文件,编写如下代码

导航到res > drawable 。右键单击可绘制文件夹,转到新建,然后单击可绘制资源文件。现在将名称设置为 custom_switch,将根元素设置为选择器,然后单击确定。现在将以下代码添加到您的文件中。下面的代码表示 Switch 上的两种状态,即 true 和 false。当为真时,颜色为绿色,当为假时,颜色为红色。

XML


    
        
            
            
            
            
        
    
    
        
            
            
            
            
        
    


XML


  
    
  


Kotlin
package org.geeksforgeeks.switchwidget
  
import android.annotation.SuppressLint
import android.os.Bundle
import android.widget.Switch
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    @SuppressLint("UseSwitchCompatOrMaterialCode")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val mSwitch = findViewById(R.id.switch_1)
  
        // Display Toasts in each of true and false case
        mSwitch.setOnCheckedChangeListener { _, isChecked ->
            if (isChecked) {
                Toast.makeText(applicationContext, "Switch On", Toast.LENGTH_SHORT).show()
            } else {
                Toast.makeText(applicationContext, "Switch Off", Toast.LENGTH_SHORT).show()
            }
        }
    }
}


第 3 步:使用 activity_main.xml 文件

导航到app > res > layout > activity_main.xml并将以下代码添加到该文件。下面是activity_main.xml文件的代码。添加一个开关,如下所示。将 thumb 属性设置为上面代码中创建的自定义开关。

XML



  
    
  

第 4 步:使用 MainActivity.kt 文件

转到MainActivity.kt文件并参考以下代码。下面是MainActivity.kt文件的代码。代码中添加了注释以更详细地理解代码。

科特林

package org.geeksforgeeks.switchwidget
  
import android.annotation.SuppressLint
import android.os.Bundle
import android.widget.Switch
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    @SuppressLint("UseSwitchCompatOrMaterialCode")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val mSwitch = findViewById(R.id.switch_1)
  
        // Display Toasts in each of true and false case
        mSwitch.setOnCheckedChangeListener { _, isChecked ->
            if (isChecked) {
                Toast.makeText(applicationContext, "Switch On", Toast.LENGTH_SHORT).show()
            } else {
                Toast.makeText(applicationContext, "Switch Off", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

输出:

可以看到,当 Switch 为 false 时,拇指的颜色为红色。单击 Switch 时,Switch 变为 true,拇指颜色变为绿色。