我遵循了Google的标准Android SDK教程,并且已经到了可以更改操作栏选项的地步。
当打开一个不同的活动,它弹出(淡出+增长)作为一个动画。我的问题是,这个活动内的新动作栏弹出也一起与动画(它都连接为一个容器),我希望动作栏坚持在顶部,固定,而只有应用程序的内容弹出。当操作栏的内容改变时,它应该改变而不需要任何动画。以Telegram应用程序为例。
当我遵循标准教程时,我猜这是默认行为,所以关闭它可能是常见的,但我还没有找到一个有效的解决方案,所以我一定忽略了一些非常基本的设置。
themes.xml:
...
<style name="BlaTheme"
parent="@style/Theme.AppCompat">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item>
<item name="android:actionMenuTextColor">@color/actionbar_text</item>
<item name="android:background">@color/darkpurple</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MyActionBar</item>
<item name="actionBarTabTextStyle">@style/MyActionBarTabText</item>
<item name="actionMenuTextColor">@color/actionbar_text</item>
<item name="android:windowActionBar">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar"
parent="@style/Widget.AppCompat.ActionBar">
<item name="android:background">@android:color/transparent</item>
<item name="android:titleTextStyle">@style/MyActionBarTitleText</item>
<!-- Support library compatibility -->
<item name="titleTextStyle">@style/MyActionBarTitleText</item>
</style>
...
你可以这样定义你的过渡:
-
在fade.xml文件中:
<?xml version="1.0" encoding="utf-8"?> <transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <fade android:duration="500"> <targets> <!--excluding status bar--> <target android:excludeId="@android:id/statusBarBackground"/> <!--excluding navigation bar--> <target android:excludeId="@android:id/navigationBarBackground"/> <!--excluding toolbar bar--> <target android:excludeId="@id/toolbar" </targets> </fade> </transitionSet>
,然后设置为:
Transition mFadeTransition =
TransitionInflater.from(this).
inflateTransition(R.transition.fade);
getWindow().setEnterTransition(mFadeTransition);
或者只使用java:
Fade fade = new Fade(); fade.setDuration(500); //exclude toolbar fade.excludeTarget(R.id.toolbar, true); //exclude status bar fade.excludeTarget(android.R.id.statusBarBackground, true); //exclude navigation bar fade.excludeTarget(android.R.id.navigationBarBackground, true); getWindow().setEnterTransition(fade);