Android 7.1.2 QuickSettings磁贴没有着色

时间:2017-04-04 00:09:48

标签: android settings android-7.1-nougat

基于Tile.STATE_ACTIVE和Tile.STATE_INACTIVE,我一直在绞尽脑汁超过一个小时试图找出为什么我的QuickSettings磁贴没有着色。我使用相同的图标,它在清单中设置,但我在onStartListening中动态更改状态。这在Android 7.1.1上运行良好。

是否有其他人注意到他们的QuickSettings图块没有着色?

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

我有同样的问题,而一切都工作正常,直到7.1.1。 看起来这种情况正在从Android 7.1.2开始。 当这个版本处于测试阶段时,我发现了相同的行为。我不得不回滚到7.1.1以正确测试我的应用程序,我确信这个问题将在最终的7.1.2版本中修复。但它没有。 使用一些框架图块也可以复制相同的内容,例如显示布局边界配置文件GPU渲染:这些图块不会反映开/关状态。我不知道在7.1.2最终版本中如何忽略了这么明显的东西。到目前为止,我唯一的临时解决方案是为off状态提供drawable,为最终的apk添加更多资源。它不是解决方案,但至少它可以帮助更好地理解开/关状态。