java - 为什么 ColorStateList 不适用于 GradientDrawable?
问题描述
我正在尝试使用为不同状态设置的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(它不是我设置的状态的一部分)。有人可以帮我解决这个问题吗?谢谢
解决方案
推荐阅读
- python - 将 2-d pandas 数据帧重新映射到 3-d xarray
- reactjs - 如何不在控制台中打印状态更改
- excel - 如何对动态的单个单元格求和?
- java - java.lang.NoClassDefFoundError: cucumber/api/DataTable error while rinning cucumber tests
- python - 如何在大型 csv 数据框中搜索特定的特征名称?
- excel - 自动增加 Vlookup
- php - 3表多对多关系
- go - 如何使用 Chromedp Go 解析器滚动?
- python - 如何在函数中编写 for 循环以获取 csv 中的值?
- youtube-api - YouTube 数据 API 更改视频 ID