8

Android 5.0 ロリポップでは、

アクティビティ A と B の 2 つがあります。アクティビティ B には、オーバーレイ ActionBar を使用して下からスリー入力トランジションがありますが、B が表示されると、ActionBar も下から上にスライドします。

アクションバーがスライド遷移しないようにするにはどうすればよいですか? システムアクションバーには、除外ターゲットに追加できる ID がありますか?

ありがとう!

4

2 に答える 2

9

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 名が変更されると、このコードは壊れることに注意してください。変わることはないと思いますが…。

その他の関連情報については、この投稿を参照してください。

于 2014-12-26T21:33:42.080 に答える
6

私の解決策は、この引数でスタイルを拡張することです:

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

必要に応じてその遷移をいじることができます。重要なのは、除外されたターゲットだけです。

于 2016-03-21T20:08:23.243 に答える