我正在使用 getColor()
方法从资源中选择颜色。但是我发现还有一个方法叫做getColorStateList()
。哪一个好用,它们有什么区别?
最佳答案
假设您要setBackgroundColor 到一个 View ,例如linearLayout。 如果您希望它的背景颜色是永久的,您需要使用getColor() 来设置一个特定颜色。 但是如果你希望它的颜色在不同的状态和事件上改变比如按下状态或未按下状态你会想要设置资源ID xml 文件包含这些颜色更改任务的代码。
这是我在代码中所说的:
linearLayout.setBackgroundColor(getResources().getColor(R.color.red);
上面的代码行将 linearLayout 的永久颜色设置为红色。
linearLayout.setBackgroundTintList(getResources().getColorStateList(R.drawable.layout_background));
上面的这一行代码将布局按下时将背景色设置为红色,未按下时将背景色设置为白色。
layout_background.xml :
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="@color/red" />
<item android:state_pressed="false"
android:color="@color/white" />
</selector>
关于android - Android 中的 getColor() 和 getColorStateList() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56578588/