我已经绞尽脑汁想弄清楚为什么我的 QuickSettings 磁贴没有根据 Tile.STATE_ACTIVE 和 Tile.STATE_INACTIVE 着色。我使用清单中设置的相同图标,但我在 onStartListening 中动态更改状态。这在 Android 7.1.1 上运行良好。
有没有其他人注意到他们的 QuickSettings 磁贴没有着色?
我已经绞尽脑汁想弄清楚为什么我的 QuickSettings 磁贴没有根据 Tile.STATE_ACTIVE 和 Tile.STATE_INACTIVE 着色。我使用清单中设置的相同图标,但我在 onStartListening 中动态更改状态。这在 Android 7.1.1 上运行良好。
有没有其他人注意到他们的 QuickSettings 磁贴没有着色?
为每个状态显式设置图标,它将正确着色。您必须为每个状态使用不同的可绘制资源,否则它不会改变。幸运的是,它可以是完全相同的图标。我只是复制了 ic_powersave_tile 并将其重命名为 ic_powersave_tile2。我偶然发现了这一点,我的一个应用程序在 7.1.2 上运行,而一个没有,这就是唯一的区别。
private void setCurrentState(int state){
Tile tile = getQsTile();
if (tile == null)
return;
tile.setState(state);
switch (state){
case Tile.STATE_ACTIVE:
tile.setIcon(Icon.createWithResource(getApplicationContext(),
R.drawable.ic_powersave_tile));
break;
case Tile.STATE_INACTIVE:
tile.setIcon(Icon.createWithResource(getApplicationContext(),
R.drawable.ic_powersave_tile2));
break;
case Tile.STATE_UNAVAILABLE:
tile.setIcon(Icon.createWithResource(getApplicationContext(),
R.drawable.ic_powersave_tile));
break;
}
tile.updateTile();
}
我有同样的问题,而在 7.1.1 之前一切正常。从 Android 7.1.2 开始,这似乎正在发生。在此版本处于测试阶段时,我观察到了相同的行为。我必须回滚到 7.1.1 才能正确测试我的应用程序,并且我确信此类问题将在最终的 7.1.2 版本中得到解决。但事实并非如此。同样的事情也可以用一些框架图块来重现,例如Show layout bounds和Profile GPU rendering:这些图块不会反映开/关状态。我不知道在 7.1.2 最终版本中如何忽略了如此明显的东西。到目前为止,我想到的唯一临时解决方案是为关闭状态提供可绘制对象,为最终的 apk 添加更多资源。这不是一个解决方案,但至少它可以帮助更好地理解开/关状态。