6

我从我的问题Add Color "#e3bb87" to StateListDrawable programmatically创建了 StateListDrawable ,但是 TextView.setTextColor 不采用 StateListDrawable (奇怪它在布局中起作用)而是 ColorStateList 。我读了这个更改 statelistdrawable 文本颜色的 android 按钮

在 ColorStateList 的构造函数中,它只接受 int 的数组

ColorStateList colorStateList = new ColorStateList(
            new int[][]{
                    new int[]{R.attr.state_pressed},
                    new int[]{R.attr.state_selected},
                    new int[]{-R.attr.state_selected},
            },
            new int[]{
                    Color.GREEN,
                    Color.BLUE,
                    Color.RED});

颜色没有在 colors.xml 中定义,因为我下载了这个颜色属性。我怎么能这样定义?

ColorStateList colorStateList = new ColorStateList(
            new int[][]{
                    new int[]{R.attr.state_pressed}
            },
            **getThisColor**("#e3bb87"));
4

2 回答 2

11

用这个

ColorStateList colorStateList = new ColorStateList(
            new int[][] { new int[] { R.dimen.padding_large } },
            new int[] {Color.parseColor("#e3bb87")});
于 2013-03-13T11:47:04.180 回答
5

您可以使用返回包含单一颜色的valueOf()方法:ColorStateListColorStateList

ColorStateList.valueOf(Color.parseColor("#e3bb87"))
于 2020-08-07T08:34:15.757 回答