Android 7.1.2快速设置瓷砖未着色

Android 7.1.2快速设置瓷砖未着色,android,settings,android-7.1-nougat,Android,Settings,Android 7.1 Nougat,我绞尽脑汁想了一个多小时,试图找出为什么我的QuickSettings互动程序没有基于tile.STATE\u ACTIVE和tile.STATE\u INACTIVE着色。我使用在清单中设置的相同图标,但在onStartListening中动态更改状态。这在安卓7.1.1上运行良好 其他人有没有注意到他们的QuickSetting瓷砖没有着色?我也有同样的问题,直到7.1.1,一切都正常。 从Android 7.1.2开始,这种情况似乎正在发生。 我在测试版中观察到了相同的行为。为了正确测试我

我绞尽脑汁想了一个多小时,试图找出为什么我的QuickSettings互动程序没有基于tile.STATE\u ACTIVE和tile.STATE\u INACTIVE着色。我使用在清单中设置的相同图标,但在onStartListening中动态更改状态。这在安卓7.1.1上运行良好


其他人有没有注意到他们的QuickSetting瓷砖没有着色?

我也有同样的问题,直到7.1.1,一切都正常。 从Android 7.1.2开始,这种情况似乎正在发生。 我在测试版中观察到了相同的行为。为了正确测试我的应用程序,我不得不回滚到7.1.1版本,我确信这样的问题会在最终的7.1.2版本中得到解决。但事实并非如此。
同样的事情也可以通过一些框架图块进行复制,例如显示布局边界配置文件GPU渲染:这些图块不会反映开/关状态。我不知道为什么在7.1.2最终版本中忽略了如此明显的东西。到目前为止,我想到的唯一临时解决方案是为关闭状态提供可提取的资源,为最终apk添加更多资源。这不是一个解决方案,但至少有助于更好地理解开/关状态。

我也有同样的问题,而在7.1.1之前,一切都很正常。 从Android 7.1.2开始,这种情况似乎正在发生。 我在测试版中观察到了相同的行为。为了正确测试我的应用程序,我不得不回滚到7.1.1版本,我确信这样的问题会在最终的7.1.2版本中得到解决。但事实并非如此。
同样的事情也可以通过一些框架图块进行复制,例如显示布局边界配置文件GPU渲染:这些图块不会反映开/关状态。我不知道为什么在7.1.2最终版本中忽略了如此明显的东西。到目前为止,我想到的唯一临时解决方案是为关闭状态提供可提取的资源,为最终apk添加更多资源。这不是一个解决方案,但至少有助于更好地理解开/关状态。

为每个状态明确设置图标,它将正确着色。您必须为每个状态使用不同的可绘制资源,否则它不会更改。幸运的是,它可以是完全相同的图标。我刚刚复制了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();
}

为每个状态显式设置图标,它将正确着色。您必须为每个状态使用不同的可绘制资源,否则它不会更改。幸运的是,它可以是完全相同的图标。我刚刚复制了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();
}

@Flyview我做了:@Flyview我做了:几个月前,在提供了一个alpha频道的非状态可绘制内容后,无意中发现了这篇文章@Flar2您的发现解释了为什么在alpha通道中设置了透明度的my Tile现在显示的比其他系统Tile更轻,必须缓存可绘制内容。它一直困扰着我的生活。几个月前,在提供了一个alpha频道的非状态drawables后,我无意中发现了这篇文章@Flar2您的发现解释了为什么在alpha通道中设置了透明度的my Tile现在显示的比其他系统Tile更轻,必须缓存可绘制内容。它一直在困扰着我的生活。