ScrollView嵌套ViewPager空白,上下或者左右不能滑动问题

来源:互联网 发布:大内义兴数据 编辑:程序博客网 时间:2024/06/06 01:01

最近做项目,一个详情页涉及到ScrollView中带viewPager,滑动并且切换fragment.做好界面之后发现,


没有我写好的fragment的布局,开始就找fragment的问题,关于设置adapter的时候,fragment中用


getChildFragmentManager,activity中用getSupportFragmentManager这个问题就不细说了,自己这块没毛病,方向有误,


就回去看布局,发现viewpager在布局中其实是没有显示的,应该是因为ScrollView得不到viewpager的高度,所以就显示


不出来了,就开始往这方面解决,查资料说,重写ScrollView的,试了,没用,然后看到说


1、设置ScrollView的fillViewPort为true


2、设置ViewPager的layout_height为一个固定高度


第一种呢,你设置后发现,viewpager是显示了,但是不能上下滑动了,这个fillViewPort的属性,就是充满这个布局,设置了,你


就发现ScrollView成死的了.


第二种我没试,因为fragment里面是有listview的,不可能设死,所以弃用.


最后的解决方案就是还是用ScrollView不重写它,去重写viewpager,设置它的高度.逻辑很简单,顺利解决!


布局中的viewpager,直接用MyViewPager就OK了!

public class MyViewPager extends ViewPager {    public MyViewPager(Context context) {        super(context);    }    public MyViewPager(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int height = 0;        for (int i = 0; i < getChildCount(); i++) {            View child = getChildAt(i);            child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));            int h = child.getMeasuredHeight();            if (h > height)                height = h;        }        heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);        super.onMeasure(widthMeasureSpec, heightMeasureSpec);    }

阅读全文
0 0