工具栏的PrimaryColor在Resume上是透明的

时间:2016-01-17 19:39:08

标签: android android-theme android-toolbar

我有一个奇怪的问题,我认为它与主题有关。

我将我的应用程序分为三个部分:仪表板活动,列表活动和详细活动。每个活动都有相同的主题。但是从活动3恢复后,我的工具栏是透明的,并且丢失了他的原色。

我可以通过复制主题并重命名来避免这种情况。

有人为此解决了问题吗?

<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>

1 个答案:

答案 0 :(得分:1)

  

是的,我动画工具栏。在滚动期间淡入透明。但我不会在列表和详细活动

中重复使用相同的工具栏实例

这种行为的原因在于动画工具栏可绘制,我遇到了同样的问题。

由于工具栏使用相同的样式/主题,工具栏的颜色可绘制将被缓存。修改工具栏颜色(为其设置动画)将导致此缓存颜色可绘制实例更改并保持更改。样式无效,颜色透明,这也会影响您的父母活动。这和我想的一样多。

您可以使用动画工具栏的不同drawable轻松更改此内容:

// 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));
}

这将停止您的动画版本重复使用相同的drawable并影响您的其他活动。