根据Fragment布局高度来自动适应的Viewpager
来源:互联网 发布:明星页游 知乎 编辑:程序博客网 时间:2024/05/22 23:34
在最近的项目中,要用到ViewPager,但是viewpager是放在recycleview里面,高度是不确定的,只好重写measure方法来根据子布局的高度来动态生成viewpager的高度,但是有个缺点,就是不能根据子布局的高度来收缩viewpager的高度,为了这个优化,在网上找了一个多小时,终于找到个方法,下面直接贴使用的方法:
1.将自定义viewpager放进自己的项目
package com.plyou.leintegration.view;import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.widget.LinearLayout;import java.util.HashMap;import java.util.LinkedHashMap;/** * Created by admin on 2017/10/25. */public class CustomViewPager extends ViewPager { private int current; private int height = 0; /** * 保存position与对于的View */ private HashMap<Integer, View> mChildrenViews = new LinkedHashMap<Integer, View>(); private boolean scrollble = true; public CustomViewPager(Context context) { super(context); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (mChildrenViews.size() > current) { View child = mChildrenViews.get(current); if (child != null) { child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); height = child.getMeasuredHeight(); } } heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } public void resetHeight(int current) { this.current = current; if (mChildrenViews.size() > current) { LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) getLayoutParams(); if (layoutParams == null) { layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, height); } else { layoutParams.height = height; } setLayoutParams(layoutParams); } } /** * 保存position与对于的View */ public void setObjectForPosition(View view, int position) { mChildrenViews.put(position, view); } @Override public boolean onTouchEvent(MotionEvent ev) { if (!scrollble) { return true; } return super.onTouchEvent(ev); } public boolean isScrollble() { return scrollble; } public void setScrollble(boolean scrollble) { this.scrollble = scrollble; }}
2.在fragemnt的oncreatview里面调用viewpager方法
好了,大致完成,直接看下效果吧
阅读全文
0 0
- 根据Fragment布局高度来自动适应的Viewpager
- ViewPager+Fragment ViewPager适应Fragment高度
- ViewPager+Fragment的布局
- cell根据文本长度来自动调整cell高度
- ViewPager实现自动滑动和下面小圆点可根据图片大小来自适应
- UIWebView根据加载的内容自动适应高度
- UITableView详解(UITableViewCell(三) cell根据文本长度来自动调整cell高度)
- ViewPager的高度根据item的高度自适应
- ViewPager的高度根据item的高度自适应
- 根据系统的设置字体来自动调整字体显示
- 两侧高度相互适应的CSS+div布局
- RadioGroup+ViewPager+Fragment的框架布局
- ViewPager+Fragment布局框架
- fragment+viewpager实现布局
- scrollview里面嵌套viewpager高度自动适应
- 水晶报表中让行高自适应高度(即根据内容的来适应高度)
- ViewPager 嵌套多个不同高度的Fragment,ViewPager 高度自适应
- css 根据手机屏幕适应页面高度
- CreateFileMappingW x64 位调用方法
- Linux 中断上下文为什么不允许睡眠?
- poj2195 Going Home KM算法
- python3中format函数
- SQL--函数
- 根据Fragment布局高度来自动适应的Viewpager
- kafka 傻瓜式安装(适合新手)
- 【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金
- ECharts 坐标轴颜色改变、位置改变、去网格
- 学习随笔(1)之图像的像素理解
- UML类图几种关系的总结
- 头像上传前本地预览功能的实现(兼容ie8)
- Azure Visual Studio 2017 虚拟机镜像正式上线
- 数据结构及算法