ViewPager一页显示多个item

来源:互联网 发布:双机软件品牌 编辑:程序博客网 时间:2024/05/23 17:47

ViewPager一页显示多个item

需求

最近遇到了一个比较难搞的需求:

一个ViewPager的一页要显示多个item,当前的item显示在中间,两边还能看到上一个和下一个item,在网上搜了一下,找到了合适的解决方案

解决方案

在当前界面布局中添加一个LinearLayout,内部加上ViewPager

<LinearLayout    android:id="@+id/layout_viewpager_container"    android:layout_width="match_parent"    android:layout_height="80dp"    android:clipChildren="false"    android:gravity="center"    android:layout_below="@+id/txt_author_desc"    android:visibility="gone"    android:orientation="horizontal">    <android.support.v4.view.ViewPager        android:id="@+id/horizon_pager"        android:layout_width="match_parent"        android:layout_height="80dp"        android:layout_marginLeft="18dp"        android:layout_marginRight="18dp"        android:clipChildren="false" /></LinearLayout>

我们注意父布局和ViewPager都设置了一个属性android:clipChildren=”false”,这个属性的意思就是子View不必拘束在父控件的内部,当子View的大小超过父控件时,仍然可以显示。这个属性默认是true

但是我们也注意到,ViewPager的高度设置是确定的数值,这个就是我们必须要做的,必须要给子View设置死高度,不能是wrap_content,不然的话这个ViewPager就不显示了。

我们还设置了ViewPager的左右margin,这个按照视觉稿来自己定义就可以了

在代码里我们设置:

viewPager.setOffscreenPageLimit(3);viewPager.setPageMargin(10);linearLayout.setOnTouchListener(new View.OnTouchListener() {    @Override    public boolean onTouch(View v, MotionEvent event) {        return viewPager.dispatchTouchEvent(event);    }});

首先设置ViewPager加载页码,预加载3项。然后设置两个item之间的距离,就是前面图中两个item之间的距离。最后,我们要把父布局的点击事件交由ViewPager来处理,因为如果不加这个的话,那么ViewPager的滑动就只有点击item才可以,中间的空白的地方就不会响应了。

这样就能实现最开始的需求了。这个方案比较麻烦的地方是ViewPager或者item的高度要确定。

0 0
原创粉丝点击