มิติแรกคือชุดอาร์เรย์ของรัฐชุดที่สองคือชุดของรัฐ อาร์เรย์สีแสดงรายการสีสำหรับชุดสถานะที่ตรงกันแต่ละชุดดังนั้นความยาวของอาร์เรย์สีจะต้องตรงกับมิติแรกของอาร์เรย์สถานะ (หรือจะล้มเหลวเมื่อสถานะเป็น "ใช้") ที่นี่และตัวอย่าง:
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)
}
);