[置顶] 滚动嵌套viewpager,里面的fragment高度问题(已解决)
2017-06-08 12:48
477 查看
一:先自定义我们的viewpager
二:请见我们的fragment
三:那么就剩下我们的Fragmentactivity了
聪明的你,我相信你一看便知,没错我用最简洁的语言记录了这个问题,详情请看代码
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); }
聪明的你,我相信你一看便知,没错我用最简洁的语言记录了这个问题,详情请看代码
相关文章推荐
- fragment里面嵌套ViewPager,解决切换fragment了之后ViewPager中的内容消失的问题
- [置顶] 解决ViewPager嵌套时Fragment的mUserVisibleHint属性不同步的问题
- 解决网友 ViewPager嵌套Fragment 回退问题
- 解决ViewPager嵌套Fragment内部点击事件无响应问题
- ScrollView嵌套ListView,GridView,ViewPager,以及这些控件自动滚动到底部问题的解决
- 解决fragment的子fragment中viewpager里面的fragment不销毁 反复创建问题
- 解决android FragmentTabHost + viewpager + fragment 嵌套布局切换出现白屏什么都没有问题
- 解决ViewPager嵌套时Fragment的mUserVisibleHint属性不同步的问题
- ScrollView嵌套ListView,GridView,ViewPager,以及这些控件自动滚动到底部问题的解决
- 解决fragment中嵌套viewpager,vierpager中有多个fragment,不显示的问题
- ScrollView嵌套ListView,GridView,ViewPager,以及这些控件自动滚动到底部问题的解决
- ScrollView嵌套ListView,GridView,ViewPager,以及这些控件自动滚动到底部问题的解决
- Android ViewPager和ScrollView嵌套滚动问题解决方案
- 解决ViewPager嵌套时Fragment的mUserVisibleHint属性不同步的问题
- 在viewpager中嵌套fragment再嵌套viewpager的事件分发问题解决
- ScrollView嵌套ListView,GridView,ViewPager,以及这些控件自动滚动到底部问题的解决
- [置顶] RecyclerView常见问题解决方案,RecyclerView嵌套自动滚动,RecyclerView 高度设置wrap_content 无作用等问题
- Fragment里面用ViewPager嵌套2个Fragment,第二次切换变成空白的解决办法
- Activity中包含多个Fragment,Afragment中嵌套ViewPager,在第二次切换到Afragment时Viewpager内容被清空的问题解决
- 解决viewpager嵌套viewpager fragment不显示问题