android - Android 中的 getColor() 和 getColorStateList() 有什么区别

标签 android colors android-resources

我正在使用 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/

相关文章:

android - 如何使用 Firebase ML Kit 在图像中查找标记?

css - 如何在鼠标悬停在图像 map 上时更改超链接的颜色属性?

android - android资源和资源ID之间的映射是如何工作的?

android - Android中如何查询彩信登录

android - Android 浏览器中奇怪的水平滚动

pdf - iText PDF : replace/transform colours

java - 获取 TableCellEditor 颜色以匹配外观和感觉

java - 如何处理大量动画 vector 绘图?

Android:制作 "shrinkResources true"以保留所有可绘制对象,但删除其他未使用的资源

android - 在 ViewPager 中垂直滑动