首页 > 解决方案 > 在 Oreo 上,SeekBar 拇指上的 setColorFilter() 会更改所有拇指

问题描述

我有一堂课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 上,所有Thumbs 都是基于列表中最后一个颜色设置的。换句话说,假设我有一个包含 2 个项目的列表——第一个是“禁用”,第二个是“启用”——这两个项目都将显示为启用。

我已经在调试器中确认“启用”变量和返回的相应颜色是正确的并且符合预期,并且我已经确认在这种情况下正在刷新完整的 recyclerview。

好像是奥利奥的虫子。有没有其他人看到过这个,或者对如何解决有任何想法?

标签: androidandroid-8.0-oreoseekbar-thumb

解决方案



推荐阅读