滚动嵌套viewpager,里面的fragment高度问题(已解决)
来源:互联网 发布:高分一号卫星数据价格 编辑:程序博客网 时间:2024/06/08 11:17
一:先自定义我们的viewpager
public class MyViewPager 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 MyViewPager(Context context) { super(context); } public MyViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (mChildrenViews.size() > current) { View child = mChildrenViews.get(current); 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) { FrameLayout.LayoutParams layoutParams= (FrameLayout.LayoutParams) getLayoutParams();// LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) getLayoutParams(); if (layoutParams == null) { layoutParams = new FrameLayout.LayoutParams(FrameLayout.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; }}二:请见我们的fragment
public class View_prodesc extends Fragment{ MyViewPager vpp; View v; public View_prodesc(MyViewPager vp) { this.vpp = vp; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { v=inflater.inflate(R.layout.t_lin, null); vpp.setObjectForPosition(v,0); initView(); hosabout(); return v; }
三:那么就剩下我们的Fragmentactivity了
mViewPager.setAdapter(mAdapter); //TabLayout的切换监听mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { mViewPager.resetHeight(position); ((NestedScrollView) findViewById(R.id.item_detail_container)).scrollTo(0, 0); } @Override public void onPageScrollStateChanged(int state) { }}); mViewPager.resetHeight(0);}聪明的你,我相信你一看便知,没错我用最简洁的语言记录了这个问题,详情请看代码
阅读全文
0 0
- 滚动嵌套viewpager,里面的fragment高度问题(已解决)
- fragment里面嵌套ViewPager,解决切换fragment了之后ViewPager中的内容消失的问题
- Fragment里面嵌套ViewPager
- Fragment 嵌套ViewPager(ViewPager里面有多个Fragment)
- Viewpager 嵌套fragment的问题
- viewpager的fragment嵌套viewpager的问题
- 解决fragment的子fragment中viewpager里面的fragment不销毁 反复创建问题
- 解决ViewPager嵌套ViewPager里面添加点击事件问题
- 解决viewpager嵌套viewpager fragment不显示问题
- 关于viewpager+fragment中嵌套viewpager+fragment的问题处理:
- 解决viewpager嵌套scrowllview或者viewpager嵌套viewpager的问题
- ScrollView里面嵌套ViewPager 的问题
- 自定义 viewpager 解决viewpager 嵌套到其他滚动父控件时候冲突的问题
- 解决fragment中嵌套viewpager,vierpager中有多个fragment,不显示的问题
- 解决listview嵌套viewpager使viewpager的高度异常冲突
- ViewPager嵌套ViewPager滑动问题的解决
- 关于fragment中嵌套viewpager的问题
- ViewPager的Fragment嵌套使用,getSupportFragmentManager问题
- JDBC初涉
- 基础整理(1)
- Django来敲门~第一部分【2. 安装】
- vi/vim 基本使用用法【linux】
- Error:Unable to find method 'com.android.build.gradle.internal.variant.BaseVariantData.getOutputs()L
- 滚动嵌套viewpager,里面的fragment高度问题(已解决)
- 加速物联网应用人才培育,中盛君安与机智云达成战略合作
- 使用hadoop做wordcount笔记
- Android权限(permission)大全
- 求最大公约数
- Android源码下常用的Builder模式
- ns3编译错误“UnicodeDecodeError”解决方法
- Linux中history历史命令使用方法详解
- 数组中重复的数字