怎么给viewpager设置一页显示不只一个条目

 我来答
静微微11
2016-08-18 · 超过14用户采纳过TA的回答
知道答主
回答量:34
采纳率:100%
帮助的人:20.6万
展开全部

1、效果图

B:表示viewpager

A:表示viewpager的父布局

B和B之间的红线:表示viewpager两个item之间的间距。


2、原理

B距离其父布局左右都有间隔,然后让B的item不局限于其内部,即能存在于B的布局之外。同样,A也要允许B不局限于A内部(clipChildren属性)。然后,设置viewpager两个item之间的距离即可(setPageMargin)。最后不要忘记在viewpager滑动后更新A界面。

3、实践


[java] view plain copy

<LinearLayout xmlns:android=】】  

    android:layout_width="match_parent"  

    android:id="@+id/viewPagerContainer"  

    android:layout_height="match_parent"  

    android:background="#EEEEEE"  

    android:clipChildren="false"  

    android:orientation="vertical" >  

  

    <android.support.v4.view.ViewPager  

        android:id="@+id/viewpage"  

        android:layout_width="match_parent"  

        android:layout_height="match_parent"  

        android:layout_marginLeft="80dp"  

        android:layout_marginRight="80dp"  

        android:clipChildren="false" />  

  

</LinearLayout>  



[java] view plain copy

<span style="white-space:pre">    </span>pager.setOnPageChangeListener(new MyOnPageChangeListener());  

<span style="white-space:pre">    </span>     

    // pageCount设置红缓存的页面数     

    pager.setOffscreenPageLimit(3);    

    // 设置2张图之前的间距。    

    pager.setPageMargin(20);  

  

    public class MyOnPageChangeListener implements OnPageChangeListener {  

           

        @Override  

        public void onPageSelected(int position) {  

        }  

   

        @Override  

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

            // to refresh frameLayout  

            if (viewPagerContainer != null) {  

                viewPagerContainer.invalidate();  

            }  

        }  

   

        @Override  

        public void onPageScrollStateChanged(int arg0) {  

        }  

    }  


4、特例viewpager + fragment

setPageMargin必须是一个负数,才能实现两个item之间的间隔,否则两个item会重合~~~去实践吧,骚年。

5、注意事项

1.FragmentPagerAdapter和FragmentStaticPagerAdapter区别:第一个不会销毁fragment本身,只会销毁其视图。对于需要保存数据的很有用。

2.不要在Fragment中定义getView()来获取对应的视图,getView是其默认的方法,换一个名称吧(如:getFragView)。

3.要想动态更改fragment的视图,那你必须等到viewpager.setAdapter之后~否则无效果,因为fragment还未创建~



更多相关内容可参考资料www.viiboo.cn 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式