我使用 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
与另一个包含 webview 的片段共享屏幕宽度的事实有关。当 .show 为 my_fragment 执行时,它变得可见并在水平线性布局中共享空间(两个片段中的每一个占用多少屏幕宽度由 weight 参数确定)。