最近在项目中遇到ScrollView嵌套GridView的需求,由于ScrollView和GridView的滑动方向都一样,所以会产生冲突。在网上找了好了好久,搜到的都是在setOnTouchListener(new View.OnTouchListener()里设置GridView的requestDisallowInterceptTouchEvent(true),可这并不能真正解决我的需求问题,思考测试一段时间后,想到了一个方法,但任然存在一些小bug。
具体的代码和过程如下:
首先要自定义一个ScrollView
package com.xiaosong.yuangou;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView;
/**
* Created by user on 2015/8/31.
*/
public class InforScrollView extends ScrollView {
private OnScrollListener onScrollListener;
public InforScrollView(Context context){
super(context);
}
public InforScrollView(Context context,AttributeSet attrs){
super(context, attrs);
}
public InforScrollView(Context context,AttributeSet attrs,int defStyle){
super(context, attrs, defStyle);
}
public void setOnScrollListener(OnScrollListener onScrollListener){
this.onScrollListener = onScrollListener;
}
@Override
protected int computeVerticalScrollRange() {
return super.computeVerticalScrollRange();
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if(onScrollListener != null){
onScrollListener.onScroll(t);
}
}
public interface OnScrollListener{
public void onScroll(int ScrollY);
}
}
接下来就是自定义的GridView,用来实现GridView控件的内容滑动到顶部和底部的监听,代码如下:
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.AbsListView;
import android.widget.GridView;
/**
* Created by user on 2015/9/29.
*/
public class MainHeadGrideView extends GridView implements AbsListView.OnScrollListener{