动画ViewPager在Android中填充屏幕

 书友75271582 发布于 2023-02-05 08:22

所以我有一个看起来像这样的视图:

在此输入图像描述

我想要实现的是当用户在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",我认为它足以填充它可用的所有空间.我认为正在发生的事情是视图没有被告知它有更多的空间可以使用并因此重新绘制它的界限,但我不确定如何触发它自己.

有谁知道怎么做(或者更好的方法让我实现我想要的)?谢谢阅读.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有