我有一个班级public class LevelSeekBar extends AppCompatSeekBar
。在那个课程中,我有这个方法:
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
int color = getResources().getColor(getColorForState(enabled));
getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
}
此LevelSeekBar在自定义列表中使用,使用RecyclerView实现。在刷新时,逐个调用每个LevelSeekBar.setEnabled()。
在设备上< Android 8.0(Oreo),完全符合预期。
但是,在Android 8.0上,拇指的全部是根据列表中的最后一个颜色设置的。换句话说,我们说我有一个包含2个项目的列表 - 第一个是“禁用”#39;第二个是启用' - 两个项目都会显示为已启用。
我已在调试器中确认已启用'变量和返回的相应颜色是正确的和预期的,我已经确认在这种情况下正在刷新完整的recyclerview。
好像是一个奥利奥小虫。有没有其他人看过这个,或者有任何关于如何解决的想法?
答案 0 :(得分:2)
您需要在.mutate()
返回的Drawable上调用getThumb()
。
https://developer.android.com/reference/android/graphics/drawable/Drawable.html#mutate()