我的活动包含Toolbar
和Fragment
,其中包含GridView
。
以下是Activity
:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<android.support.v7.widget.Toolbar
android:id="@+id/home_toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/abc_action_bar_default_height_material_custo"
android:background="@color/black">
<include layout="@layout/custom_action_bar"/>
</android.support.v7.widget.Toolbar>
</FrameLayout>
我的Fragment
已插入content_frame布局。
以下是我Fragment
的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/gridView"
android:paddingTop="@dimen/abc_action_bar_default_height_material_custo"
android:clipToPadding="false"/>
</RelativeLayout>
非常标准的东西。
滚动ToolBar
时,我正在为GridView
制作动画,以使其从顶部消失/显示。
mShowAB = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.abc_slide_in_top);
mHideAB = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.abc_slide_out_top);
mShowAB.setFillAfter(true);
mHideAB.setFillAfter(true);
动画资源是Android的默认ActionBar
动画。
除了ToolBar
不可见,我没有收到GridView
最初定位的ToolBar
上的点击事件时,一切都运行正常。
我也试图让Toolbar
GONE但它没有帮助。
mHideAB.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
if (mToolbar != null) {
mToolbar.setVisibility(View.GONE);
}
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
有没有人有同样的问题?你知道为什么以及如何解决这个问题吗?
谢谢
解决方案:
解决方案是使用ObjectAnimator:
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(mToolbar, "translationY", 0);
objectAnimator.setDuration(getResources().getInteger(android.R.integer.config_mediumAnimTime));
objectAnimator.start();