我尝试使用为不同状态设置的 GradientDrawable 设置 TestView 背景。 使用方法时: GradientDrawable 的 setStroke 和 setColor (获得 ColorStateList )似乎是 ColorStateList 被忽略。 对于以下代码:
int frameColor = Color.parseColor("#000000");
GradientDrawable charFrameDrawable = new GradientDrawable();
ColorStateList colorStateList = new ColorStateList(new int[][]{{android.R.attr.state_activated}}, new int[]{frameColor});
charFrameDrawable.setStroke(1, colorStateList);
charFrameDrawable.setColor(colorStateList);
textView = new TextView(this);
textView.setBackground(charFrameDrawable);
}
@Override
protected void onStop() {
super.onStop();
int[] arr =textView.getBackground().getState();
for (int i =0; i<arr.length;i++)
{
Log.e("12345",String.valueOf(arr[i]));
}
我得到以下输出:
2020-07-01 03:21:45.776 29138-29138 / com.example.testcheckbox E / 12345:16842910 2020-07-01 03:21:45.776 29138-29138 / com.example.testcheckbox E / 12345:16843597
如您所见,尽管只有一个状态,但我得到两个ID,第一个ID属于 state_enabled const(这不是我设置的状态的一部分)。 有人可以帮我解决这个问题吗? 谢谢