小编典典

如何以编程方式创建 ColorStateList?

all

我正在尝试ColorStateList使用以下方式以编程方式创建一个:

ColorStateList stateList = new ColorStateList(states, colors);

但我不确定这两个参数是什么。

根据文档:

public ColorStateList (int[][] states, int[] colors)

在 API 级别 1 中添加

创建一个 ColorStateList,它返回从状态到颜色的指定映射。

有人可以解释一下如何创建这个吗?

状态的二维数组是什么意思?


阅读 73

收藏
2022-06-25

共1个答案

小编典典

有关可用状态的列表,请参阅http://developer.android.com/reference/android/R.attr.html#state_above_anchor

如果您想为禁用、未聚焦、未选中状态等设置颜色,只需否定这些状态:

int[][] states = new int[][] {
    new int[] { android.R.attr.state_enabled}, // enabled
    new int[] {-android.R.attr.state_enabled}, // disabled
    new int[] {-android.R.attr.state_checked}, // unchecked
    new int[] { android.R.attr.state_pressed}  // pressed
};

int[] colors = new int[] {
    Color.BLACK,
    Color.RED,
    Color.GREEN,
    Color.BLUE
};

ColorStateList myList = new ColorStateList(states, colors);
2022-06-25