첫 번째 차원은 상태 집합의 배열이고 두 번째 차원은 상태 집합 자체입니다. 색상 배열은 각 일치하는 상태 세트의 색상을 나열하므로 색상 배열의 길이는 상태 배열의 첫 번째 차원과 일치해야합니다 (또는 상태를 "사용"하면 충돌 함). 여기와 예 :
ColorStateList myColorStateList = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_pressed}, //1
new int[]{android.R.attr.state_focused}, //2
new int[]{android.R.attr.state_focused, android.R.attr.state_pressed} //3
},
new int[] {
Color.RED, //1
Color.GREEN, //2
Color.BLUE //3
}
);
도움이 되었기를 바랍니다.
편집 예 : 다음과 같은 XML 색상 상태 목록 :
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/white"/>
<item android:color="@color/black"/>
</selector>
이처럼 보일 것입니다
ColorStateList myColorStateList = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_pressed},
new int[]{}
},
new int[] {
context.getResources().getColor(R.color.white),
context.getResources().getColor(R.color.black)
}
);