您的位置:首页 > 其它

viewpager在禁止滑动之后仍可滑动部分页面的bug兼自适应的做法

2016-11-06 14:24 363 查看
package com.yourdream.app.android.utils;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

/**
* 滑动页面工具类
*
* Created byLiuhulai on 2016/10/21.
*/
public class ViewPagerUtil extends ViewPager {

private boolean scrollble = true;   //是否可滑动

public ViewPagerUtil(Context context) {
super(context);
}

public ViewPagerUtil(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
if (!scrollble) {
return true;
}
return super.onTouchEvent(ev);
}

@Override
public void scrollTo(int x, int y) {
if(!scrollble)
{
super.scrollTo(x, y);
}
else
{
super.scrollTo(0, 0);
}

}

@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
if (scrollble)
return false;
else
return super.onInterceptTouchEvent(arg0);
}

@Override
public void setCurrentItem(int item, boolean smoothScroll) {
super.setCurrentItem(item, smoothScroll);
}

@Override
public void setCurrentItem(int item) {
super.setCurrentItem(item);
}

public boolean isScrollble() {
return scrollble;
}

/**
* 外部接口控制页面的滑动
* @param scrollble
*/
public void setScrollble(boolean scrollble) {
this.scrollble = scrollble;
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)<span style="white-space:pre">	</span>//自适应
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int childSize = getChildCount();
int maxHeight = 0;
for (int i = 0; i < childSize; i++)
{
View child = getChildAt(i);
child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
if (child.getMeasuredHeight() > maxHeight)
{
maxHeight = child.getMeasuredHeight();
}
}

if (maxHeight > 0)
{
setMeasuredDimension(getMeasuredWidth(), maxHeight);
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: