画面の一部を占めるフラグメントを表示するには、show/hideを使用します。何らかの理由で、フラグメントが表示されるとslide_in_left
アニメーションが再生されますが、フラグメントが非表示になっているとアニメーションがなく、フラグメントが消えるだけです。との両方にslide_in_left
アニメーションを使用してみましたが、これは役に立ちませんでした。コードをサポートパッケージにトレースすると、アニメーションが作成され、それを表示するためのコードが実行されます。(私は呼び出しを追跡しました)exit
enter
.hide
FragmentManager fm = _activity.getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.my_fragment);
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_left);
if (fragment.isHidden()) {
ft.show(fragment);
fragment.setUserVisibleHint(true);
} else {
ft.hide(fragment);
}
ft.commit();
念のため、ここにslide_out_left
アニメーションのxmlがあります
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-50%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
編集:my_fragment
問題は、Webビューを含む別のフラグメントと画面幅を共有
しているという事実に関係している可能性があります。my_fragmentに対して.showを実行すると、.showが表示され、水平線形レイアウト内でスペースを共有します(2つのフラグメントのそれぞれが占める画面幅は、重みパラメーターによって決まります)。