android scrollview 空白,Android ScrollView嵌套ViewPager不显示和出现空白部分 解决方法...

1.不显示问题--重写ViewPager

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);

}

}

2:不显示+空白问题---同样的重写Viewpager(参考别人的方法:地址忘了)

public class ViewPagerForScrollView extends ViewPager{

private int current;

private int height = 0;

/**

* 保存position与对于的View

*/

private HashMap mChildrenViews = new LinkedHashMap();

private boolean scrollble = true;

public ViewPagerForScrollView(Context context) {

super(context);

}

public ViewPagerForScrollView(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

public boolean onInterceptTouchEvent(MotionEvent event) {

// Never allow swiping to switch between pages

return false;

}

@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) {

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;

}

}

调用:

8374eed61c28?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

fragment需要这样写

8374eed61c28?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

activity需要这样写@@

8374eed61c28?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

8374eed61c28?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值