我有一个奇怪的问题,我认为它与主题有关。
我将我的应用程序分为三个部分:仪表板活动,列表活动和详细活动。每个活动都有相同的主题。但是从活动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>
答案 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并影响您的其他活动。