不同高度ITEM的ViewPage

BottomViewPage

项目遇到一个需求,需要不同高度ITEM的ViewPage,

import android.content.Context;

import android.util.AttributeSet;

import android.view.ViewGroup;

import androidx.annotation.NonNull;

import androidx.annotation.Nullable;

import androidx.viewpager.widget.ViewPager;

import org.jetbrains.annotations.NotNull;

/**

* <p> 功能描述:动态修改ViewPager大小    

* <p>

* 详细描述:

*

* @Author: 龚寿生

* @CreateDate: 2021/8/19 19:39

* @UpdateUser: 最后一次更新者

* @UpdateDate: 2021/8/19 19:39

* @UpdateRemark: 最后一次更新说明

* @Version: 1.0 版本

*/

public class BottomViewPage extends ViewPager {

    public BottomViewPage(@NonNull @NotNull Context context) {

        super(context);

    }

    public BottomViewPage(@NonNull @NotNull Context context, @Nullable @org.jetbrains.annotations.Nullable AttributeSet attrs) {

        super(context, attrs);

    }

    /**

     * 在切换tab的时候,重置ViewPager的高度

     */

    public void resetViewHeightToShowViewHeight(int height) {

        ViewGroup.LayoutParams params = this.getLayoutParams();

        if (params.height == height) {

            return;

        }

//        Log.i("gss", params.height + "==" + height);

        params.height = height;

        setLayoutParams(params);

        requestLayout();

    }

}

在滑动的时候动态修改每个ITEM的高度

    mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override

            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override

            public void onPageSelected(int position) {

//                Log.i("gss", "onPageSelected=" + position);

                switch (position) {

                    case 0:

                        mViewPager.resetViewHeightToShowViewHeight(193);

                        break;

                    case 1:

                        mViewPager.resetViewHeightToShowViewHeight(362);

                        break;

                }

            }

            @Override

            public void onPageScrollStateChanged(int state) {

//                Log.i("gss", "state=" + state);

                if (state == SCROLL_STATE_DRAGGING) {

                    mViewPager.resetViewHeightToShowViewHeight(362);

                } else if (state == SCROLL_STATE_SETTLING) {

                    if (mViewPager.getCurrentItem() == 0) {

                        mViewPager.resetViewHeightToShowViewHeight(193);

                    }

                }

            }

        });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 安卓的ViewPager2是一个强大的滑动组件,它可以让用户在不同的滑动页之间轻松切换。它是一个扩展自RecyclerView的组件,具有RecyclerView的所有功能,同时还可以轻松实现视差效果等其他特性。除此之外,ViewPager2还可以与Fragment一起使用,方便了应用程序的开发。ViewPager2的使用非常简单,只需要创建一个PagerAdapter,指定要显示的视图、标签和位置即可,然后将其设置到ViewPager2中即可实现滑动效果。而且,ViewPager2还支持自适应高度和宽度,可以根据不同的内容自动调整大小,让界面更加美观和易用。如果您正在开发安卓应用程序,并需要实现滑动效果,那么ViewPager2绝对是您的不二选择。它不仅功能强大,而且使用起来非常简单,能够帮助您快速实现各种滑动效果,提升用户的使用体验,为您的应用程序带来更多的价值。 ### 回答2: 安卓ViewPager2是一个可滑动的视图容器,可用于在同一屏幕上显示多个视图。它是安卓平台上ViewPager的改进版本,提供更好的性能、可重用性和灵活性。 ViewPager2能够轻松地实现在同一屏幕上滑动切换多个fragment,从而提高用户体验。它的主要优点包括其支持高性能的RecyclerView,与RecyclerView相似的灵活的适配器和item布局,以及可以使用DiffUtil自动更新数据。 此外,ViewPager2还提供了更便于使用的API,如setCurrentItem方法,此方法允许您传递一个可点击的item作为参数,并立即切换到它。 总的来说,如果您需要一个可用于快速切换视图的高性能、易于使用的组件,那么安卓ViewPager2将是一个不错的选择。 ### 回答3: Android中的ViewPager2是一种布局容器,它允许用户在不同的页面之间滑动并进行交互。它是Android支持库中的一部分,具有比早期版本ViewPager更好的性能和灵活性。 与ViewPager不同ViewPager2使用RecyclerView作为其基础实现,并且支持竖向滚动。它还支持数据绑定,可以更方便地将数据与视图绑定在一起。 ViewPager2有几种不同的滚动模式,包括手动和自动,可以依据具体的需求设置。ViewPager2还提供了用于自定义页面切换动画的接口,以及用于控制页面布局的接口。 在使用ViewPager2时,需要制定适配器来提供每个页面的内容,并且需要在适配器中指定每个页面的类型。然后,将ViewPager2与适配器关联起来即可显示内容。 总的来说,ViewPager2是一种强大的布局容器,为Android应用程序提供了一种方便的方式来管理和展示多个视图。它具有很好的性能和灵活性,适用于许多不同的应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时代我西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值