您的位置:首页 > 其它

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

2017-07-28 12:47 1846 查看
最近做项目,一个详情页涉及到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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: