恢复时工具栏的主色是透明的
PrimaryColor of Toolbar is Transparent on Resume
我有一个奇怪的问题,我认为它与主题有关。
我将我的应用程序分为三个部分:仪表板 activity、列表 activity 和详细信息 activity。每个 activity 都有相同的主题。但是从 activity 恢复后,三个是我的工具栏透明并且失去了他的原色。
我可以通过复制主题并重命名来避免这种情况。
有人解决这个问题吗?
<style name="TransAppTheme" parent="AppTheme">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
</style>
<style name="AppTheme" parent="AppTheme.Base"/>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:textColorPrimary">@color/text_primary</item>
<item name="android:textColorSecondary">@color/text_secondary</item>
<item name="colorPrimary">@color/dukes_blue_dark</item>
<item name="colorPrimaryDark">@color/dukes_blue_statusbar</item>
<item name="colorAccent">@color/accent_amber_200</item>
<item name="colorButtonNormal">@color/dukes_blue_dark</item>
<item name="colorControlNormal">@color/dukes_blue_dark</item>
<item name="colorControlActivated">@color/dukes_blue_dark</item>
</style>
Yes i animate my toolbar. Fading to transparent during scroll. But i don't reuse the same instance of Toolbar during my list and detail activity
此行为的原因在于为可绘制的工具栏设置动画,我遇到了同样的问题。
由于工具栏使用相同的样式/主题,工具栏的可绘制颜色会被缓存。修改工具栏颜色(为其设置动画)将导致此 cached 颜色可绘制实例发生变化并保持变化。样式无效,颜色透明,这也会影响你的父活动。这就是我想出来的。
您可以通过为动画工具栏使用不同的可绘制对象来轻松更改此设置:
// mToolbar is the toolbar you are trying to animate
final int color = ContextCompat.getColor(background.getContext(), R.color.primary);
if (Build.VERSION.SDK_INT > 15) {
mToolbar.setBackground(new ColorDrawable(color));
} else {
//noinspection deprecation
mToolbar.setBackgroundDrawable(new ColorDrawable(color));
}
这将阻止您的动画版本重复使用相同的可绘制对象并影响您的其他活动。
我有一个奇怪的问题,我认为它与主题有关。
我将我的应用程序分为三个部分:仪表板 activity、列表 activity 和详细信息 activity。每个 activity 都有相同的主题。但是从 activity 恢复后,三个是我的工具栏透明并且失去了他的原色。
我可以通过复制主题并重命名来避免这种情况。
有人解决这个问题吗?
<style name="TransAppTheme" parent="AppTheme">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
</style>
<style name="AppTheme" parent="AppTheme.Base"/>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:textColorPrimary">@color/text_primary</item>
<item name="android:textColorSecondary">@color/text_secondary</item>
<item name="colorPrimary">@color/dukes_blue_dark</item>
<item name="colorPrimaryDark">@color/dukes_blue_statusbar</item>
<item name="colorAccent">@color/accent_amber_200</item>
<item name="colorButtonNormal">@color/dukes_blue_dark</item>
<item name="colorControlNormal">@color/dukes_blue_dark</item>
<item name="colorControlActivated">@color/dukes_blue_dark</item>
</style>
Yes i animate my toolbar. Fading to transparent during scroll. But i don't reuse the same instance of Toolbar during my list and detail activity
此行为的原因在于为可绘制的工具栏设置动画,我遇到了同样的问题。
由于工具栏使用相同的样式/主题,工具栏的可绘制颜色会被缓存。修改工具栏颜色(为其设置动画)将导致此 cached 颜色可绘制实例发生变化并保持变化。样式无效,颜色透明,这也会影响你的父活动。这就是我想出来的。
您可以通过为动画工具栏使用不同的可绘制对象来轻松更改此设置:
// mToolbar is the toolbar you are trying to animate
final int color = ContextCompat.getColor(background.getContext(), R.color.primary);
if (Build.VERSION.SDK_INT > 15) {
mToolbar.setBackground(new ColorDrawable(color));
} else {
//noinspection deprecation
mToolbar.setBackgroundDrawable(new ColorDrawable(color));
}
这将阻止您的动画版本重复使用相同的可绘制对象并影响您的其他活动。