我有一个函数,它使用android.graphics.Color以编程方式创建一个形状,用于描边颜色;
GradientDrawable shape = new GradientDrawable();
shape.setShape(GradientDrawable.RECTANGLE);
shape.setStroke(3, borderColor);
setStroke的第二个参数采用ColorStateList。 如何将Color转换为ColorStateList?
我尝试以编程方式创建一个;
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.toARGB(),
Color.toARGB(),
Color.toARGB(),
Color.toARGB(),
};
ColorStateList myList = new ColorStateList(states, colors);
但这不起作用。如何从android.graphics.Color设置笔触颜色?
解决: setStroke正在使用Color参数。我的代码的其他部分存在问题。
答案 0 :(得分:0)
ColorStateLists是从应用程序资源目录的“color”子目录目录中定义的XML资源文件创建的。 XML文件包含一个“selector”元素,其中包含许多“item”元素。例如:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:color="@color/sample_focused" />
<item android:state_pressed="true"
android:state_enabled="false"
android:color="@color/sample_disabled_pressed" />
<item android:state_enabled="false"
android:color="@color/sample_disabled_not_pressed" />
<item android:color="@color/sample_default" />
</selector>
这定义了一组状态规范/颜色对,其中每个状态规范指定视图必须位于或不存在的一组状态,颜色指定与该规范关联的颜色。