0

我已经绞尽脑汁想弄清楚为什么我的 QuickSettings 磁贴没有根据 Tile.STATE_ACTIVE 和 Tile.STATE_INACTIVE 着色。我使用清单中设置的相同图标,但我在 onStartListening 中动态更改状态。这在 Android 7.1.1 上运行良好。

有没有其他人注意到他们的 QuickSettings 磁贴没有着色?

4

2 回答 2

2

为每个状态显式设置图标,它将正确着色。您必须为每个状态使用不同的可绘制资源,否则它不会改变。幸运的是,它可以是完全相同的图标。我只是复制了 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();
}
于 2017-04-14T17:36:45.800 回答
0

我有同样的问题,而在 7.1.1 之前一切正常。从 Android 7.1.2 开始,这似乎正在发生。在此版本处于测试阶段时,我观察到了相同的行为。我必须回滚到 7.1.1 才能正确测试我的应用程序,并且我确信此类问题将在最终的 7.1.2 版本中得到解决。但事实并非如此。同样的事情也可以用一些框架图块来重现,例如Show layout boundsProfile GPU rendering:这些图块不会反映开/关状态。我不知道在 7.1.2 最终版本中如何忽略了如此明显的东西。到目前为止,我想到的唯一临时解决方案是为关闭状态提供可绘制对象,为最终的 apk 添加更多资源。这不是一个解决方案,但至少它可以帮助更好地理解开/关状态。

于 2017-04-04T07:58:17.650 回答