📌  相关文章
📜  如何使用ColorStateList更改Android中按钮的背景颜色?

📅  最后修改于: 2021-05-09 18:26:05             🧑  作者: Mango

ColorStateList是一个对象,它可以在可用于上取决于哪个被施加它小部件窗口小部件的状态(例如按钮等)应用不同的颜色的XML文件定义。例如,按钮有很多状态(如(已按下,已聚焦或没有它们)),其他小部件状态(如启用,可检查,已选中等),使用颜色状态列表是一种无需使用按钮即可更改按钮颜色的好方法绘制形状或自定义图像。人们应该记住,颜色状态列表可以在任何使用颜色的地方使用。颜色状态列表以XML定义,并保存在res / color文件夹下。颜色状态列表的根元素是选择器,并且为每个要使用颜色和alpha属性定义颜色的状态定义了item元素。默认颜色应该是未定义特定状态的颜色时使用的最后一个元素。下面给出了一个示例GIF,以使我们对本文中要做的事情有一个了解。请注意,我们将使用Kotlin语言实施此项目。

按钮的背景色

方法

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Kotlin作为编程语言。

步骤2:使用activity_main.xml文件

转到布局文件夹,然后在activity_main.xml文件中将ConstraintLayout更改为LinearLayout并使其方向垂直。添加按钮并切换到布局。以下是activity_main.xml文件的代码。

XML

  


  
    
    


XML


  
    
    
    
    
    
    
    
    
  


XML


    
    
    
    
    
    
    
    


Kotlin
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        button.setOnClickListener {
            // if button is already in selected state and now it is pressed
            // again,then it will reach in not selected state and vice versa
            button.isSelected != button.isSelected
        }
  
        buttonSwitch.setOnCheckedChangeListener { buttonView, isChecked ->
            // if the switch is checked,then enable the button,else not
            button.isEnabled = isChecked
        }
    }
}


步骤3:添加名为颜色的资源目录

将一个名为color的资源目录添加到res文件夹,并将根元素保留为选择器,因为我们要根据状态选择颜色。将两个名为button_text_color.xmlbutton_background_color.xml的资源文件添加到颜色资源目录。出于与上述相同的原因,将选择器保留为根元素。有关执行上述操作的信息,请参考以下图像和代码。

为了创建颜色资源文件,请右键单击res文件夹,单击“新建”,然后选择“ Android资源目录”。

如何创建资源目录的图像表示

现在,通过右键单击颜色目录并将选择器保留为根元素,在颜色资源目录中创建资源文件( button_text_color.xml和button_background_color.xml)。

单击颜色资源文件,然后输入相应的文件名

下面是代码 button_background_color.xml文件。

XML格式



  
    
    
    
    
    
    
    
    
  

以下是button_text_color.xml文件的代码。

XML格式



    
    
    
    
    
    
    
    

步骤4:使用MainActivity.kt文件

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

科特林

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        button.setOnClickListener {
            // if button is already in selected state and now it is pressed
            // again,then it will reach in not selected state and vice versa
            button.isSelected != button.isSelected
        }
  
        buttonSwitch.setOnCheckedChangeListener { buttonView, isChecked ->
            // if the switch is checked,then enable the button,else not
            button.isEnabled = isChecked
        }
    }
}

输出:在模拟器上运行

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