【Android】Scrollview嵌套EditText,使其滑动

  

	


	

                

                    

                   
                
            

  	
    
这里是自定义的Scrollview,当然你也可以使用原生的。

因为我的整个页面是在一个Scrollview中,所以这又涉及到Scrollview嵌套Scrollview的问题,所以需要屏蔽父级的Scrollview.

public class ScrollviewEdit extends ScrollView {

	private static final String TAG = "ScrollviewEdit";   
	private ScrollView parent_scrollview; 
	public ScrollView getParent_scrollview() {
		return parent_scrollview;
	}
	public void setParent_scrollview(ScrollView parent_scrollview) {
		this.parent_scrollview = parent_scrollview;
	}

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

	int currentY;
	@Override
	public boolean onInterceptTouchEvent(MotionEvent ev) {
		LogUtils.i(TAG, "onInterceptTouchEvent--------");    
		if (parent_scrollview == null) {
			return super.onInterceptTouchEvent(ev);
		} else {
			if (ev.getAction() == MotionEvent.ACTION_DOWN) {
				// 将父scrollview的滚动事件拦截
				currentY = (int) ev.getY();
				setParentScrollAble(false);
				LogUtils.i(TAG, "将父scrollview的滚动事件拦截-----");    
				return super.onInterceptTouchEvent(ev);  
			} else if (ev.getAction() == MotionEvent.ACTION_UP) {
				// 把滚动事件恢复给父Scrollview
				setParentScrollAble(true);
				LogUtils.i(TAG, "把滚动事件恢复给父Scrollview-----");  
			} else if (ev.getAction() == MotionEvent.ACTION_MOVE) {
			}
		}
		return super.onInterceptTouchEvent(ev);  
	}
	/**
	 * 是否把滚动事件交给父scrollview
	 * @param flag
	 */
	private void setParentScrollAble(boolean flag) {
		parent_scrollview.requestDisallowInterceptTouchEvent(!flag);
	}
}

其中private ScrollView parent_scrollview; 代表传递过来的父级Scrollview.

你可能感兴趣的:(Android技术)