翻译动画后显示空白区域

时间:2015-02-17 09:13:52

标签: android android-animation android-toolbar

我在向下滚动时隐藏了Toolbar,剩下的唯一视图就是SlidingTabLayoutViewPager,就像PlayStore的行为一样。但是SlidingTabLayout移动后我可以看到一个空白空格。如何消除这种情况并让ViewPager占用额外的空间?

向上滚动时,Toolbar会显示 When scrolled up, Toolbar shows

向下滚动时,它会从SlidingTabLayout留下空白区域 When scrolled down, it leaves empty space from SlidingTabLayout

@Override
public void onScrollUp() {
    if (isToolbarHidden()) showToolbar();
}

@Override
public void onScrollDown() {
    if (isToolbarShown()) hideToolbar();
}

private void showToolbar() {
    moveToolbar(0);
    moveTabs(0);
}

private void hideToolbar() {
    moveToolbar(-mToolbar.getHeight());
    moveTabs(-mTabs.getHeight());
}

private void moveTabs(float toTranslationY) {
    if (ViewHelper.getTranslationY(mTabs) == toTranslationY) return;

    ValueAnimator animator = ValueAnimator.ofFloat(ViewHelper
            .getTranslationY(mTabs), toTranslationY)
            .setDuration(ANIMATE_TIME_MILLIS);

    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float translationY = (float) animation.getAnimatedValue();
            ViewHelper.setTranslationY(mTabs, translationY);
        }
    });
    animator.start();
}

2 个答案:

答案 0 :(得分:0)

设置将扩展工具栏放置到android的线性布局:animateLayoutChanges =“true”

除此之外,您想要将工具栏占用的空间设置为GONE,以便在不闪烁的情况下启动动画,并获取空白区域。我从未使用过扩展的工具栏,但这是我在普通工具栏中完全想要的时候用普通工具栏做的。

答案 1 :(得分:0)

尝试使用 RelativeLayout 代替 LinearLayout 来包含工具栏。