笔记123--viewpager一页显示多个item
来源:互联网 发布:对网络语言的看法800字 编辑:程序博客网 时间:2024/05/23 17:28
1、效果图
B:表示viewpager
A:表示viewpager的父布局
B和B之间的红线:表示viewpager两个item之间的间距。
2、原理
B距离其父布局左右都有间隔,然后让B的item不局限于其内部,即能存在于B的布局之外。同样,A也要允许B不局限于A内部(clipChildren属性)。然后,设置viewpager两个item之间的距离即可(setPageMargin)。最后不要忘记在viewpager滑动后更新A界面。
3、实践
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/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>
<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还未创建~~
4.讲解一个布局吧
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="200dp" android:background="#000000" android:orientation="vertical" > <ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:background="#ffffff"> <LinearLayout android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:orientation="vertical" > <TextView android:id="@+id/question" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="问题描述" /> </LinearLayout> </ScrollView></LinearLayout>这个布局在activity中使用时,是完全没有问题的~
但是当这个布局在fragment中使用,切该fragment要作为viewpager的item时,悲剧就出现了,不管你怎么定义最外层布局的大小,他始终显示的是Scrollview中实际布局大小~如何解决这个问题?只要在Scrollview布局的同一级再定义一个布局即可~
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="200dp" android:background="#000000" android:orientation="vertical" > <TextView android:id="@+id/tv_type" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="多选题" /> <ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:background="#ffffff" > <LinearLayout android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:orientation="vertical" > <TextView android:id="@+id/question" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="问题描述" /> </LinearLayout> </ScrollView></LinearLayout>
0 5
- 笔记123--viewpager一页显示多个item
- ViewPager实现一页显示多个item
- Viewpager一页显示多个item
- ViewPager一页显示多个item
- android viewpager 一页显示多个图片
- ViewPager实现一个页面多个Item的显示
- 一个页面上显示ViewPager的多个item问题
- ViewPager 实现显示第二个item
- 使用ViewPager实现一页显示多个ImageView的滑动切换视图
- 一屏显示多个ViewPager的子item(中间显示完全,左右显示部分)
- ViewPager每页包含多个item
- ViewPager显示多个item,Touch事件无死角(不用marginLeft,Right等实现)
- viewpager 多个pageitem共存一页 无限轮播
- android viewpager显示三个item(横屏使用)-笔记
- ViewPager显示多个图片
- viewpager 屏幕显示多个
- ViewPager显示多个图片
- ViewPager显示两边的item
- unix/linux编程实践教程———open和fdopen的区别
- 算法篇第一:关联规则算法之Apriori(1)
- Genymotion
- mysql读写分离(二)-----主从复制
- hdu1203 I NEED A OFFER!(01背包)
- 笔记123--viewpager一页显示多个item
- 异常
- 如何实现上拉加载,默认加载10条数据,上拉再加载10条数据。
- linux应用编程笔记(3)addr.c分析linux应用程序地址布局
- sql server2005分页rownumber()
- MOSFET选型注意事项及应用实例
- 【集训队作业】MONOPLOY
- 搜索的时候,不改变页数。
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现