Android 5.0 ロリポップでは、
アクティビティ A と B の 2 つがあります。アクティビティ B には、オーバーレイ ActionBar を使用して下からスリー入力トランジションがありますが、B が表示されると、ActionBar も下から上にスライドします。
アクションバーがスライド遷移しないようにするにはどうすればよいですか? システムアクションバーには、除外ターゲットに追加できる ID がありますか?
ありがとう!
Android 5.0 ロリポップでは、
アクティビティ A と B の 2 つがあります。アクティビティ B には、オーバーレイ ActionBar を使用して下からスリー入力トランジションがありますが、B が表示されると、ActionBar も下から上にスライドします。
アクションバーがスライド遷移しないようにするにはどうすればよいですか? システムアクションバーには、除外ターゲットに追加できる ID がありますか?
ありがとう!
AppCompat v7 ライブラリを使用している場合は、簡単です。
View decor = getWindow().getDecorView();
int actionBarId = R.id.action_bar_container;
enterTransition.excludeTarget(decor.findViewById(actionBarId), true);
残念ながら、アクション バー コンテナーのビュー ID はパブリック API の一部ではないため、AppCompat v7 ライブラリを使用していない (つまり、公式のフレームワーク ライブラリを使用している) 場合は、次のコードを使用して取得することでこれを回避する必要があります。代わりに ID:
int actionBarId = getResources().getIdentifier("action_bar_container", "id", "android");
Android の将来のバージョンでアクション バー コンテナーの ID 名が変更されると、このコードは壊れることに注意してください。変わることはないと思いますが…。
その他の関連情報については、この投稿を参照してください。
私の解決策は、この引数でスタイルを拡張することです:
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowEnterTransition">@transition/slide</item>
<item name="android:windowExitTransition">@transition/slide</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowSharedElementEnterTransition">@transition/enter</item>
<item name="android:windowSharedElementExitTransition">@transition/enter</item>
これは私のものres/transition/slide.xml
です:
<?xml version="1.0" encoding="utf-8"?>
<slide xmlns:android="http://schemas.android.com/apk/res/android" android:slideEdge="bottom">
<targets>
<target android:excludeId="@android:id/statusBarBackground"/>
<target android:excludeId="@android:id/navigationBarBackground"/>
</targets>
</slide>
これは私のものres/transition/enter.xml
です:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetSdkVersion="19"
android:transitionOrdering="sequential">
<targets>
<target android:excludeId="@id/action_bar_container"/>
<target android:excludeId="@android:id/statusBarBackground"/>
</targets>
<changeBounds/>
<changeTransform/>
<changeClipBounds/>
<changeImageTransform/>
</transitionSet>
必要に応じてその遷移をいじることができます。重要なのは、除外されたターゲットだけです。