所以我有一个看起来像这样的视图:
我想要实现的是当用户在GridView上向下滚动时,整个视图向上移动以隐藏顶部的大图像.基本上,如果他们想要查看更多的gridview,则布局会向上滚动以增加gridview的大小.
但是当我真正这样做时,会发生以下情况:
它工作正常,除了GridView不会增加大小以填充屏幕中的新空间,因此窗口的下半部分全部为白色,如您所见.
以下是我到目前为止所做的事情:
private void hideHeader(boolean animate) { if(animate) { AnimatorSet set = new AnimatorSet(); set.playTogether( ObjectAnimator.ofFloat(mImageHeader, "translationY", -mImageHeader.getHeight()), ObjectAnimator.ofFloat(mShareButton, "translationY", -mImageHeader.getHeight()), ObjectAnimator.ofFloat(mIndicator, "translationY", -mImageHeader.getHeight()), ObjectAnimator.ofFloat(mViewPager, "translationY", -mImageHeader.getHeight()) ); set.setDuration(700l); set.start(); } else { //TODO finish } }
您可以从代码中看出,我正在使用ViewPager.在这种情况下,GridView实际上是一个片段,这是我第一次认为我的问题来自的地方.但是,不是ViewPager正在填充屏幕并且其内部的片段不是这样的情况,而是ViewPager本身不是垂直填充的:
这是父片段的XML(包含大图像,Share按钮和viewpager +指示符):
我最初将它作为LinearLayout,但试图将其切换为相对,看看是否会产生任何差异(它没有).
正如您所看到的,ViewPager的layout_height为"match_parent",我认为它足以填充它可用的所有空间.我认为正在发生的事情是视图没有被告知它有更多的空间可以使用并因此重新绘制它的界限,但我不确定如何触发它自己.
有谁知道怎么做(或者更好的方法让我实现我想要的)?谢谢阅读.