天天看点

ScrollView嵌套ListView、GridView

GridView、ListView与ScrollView在一起使用的时候会发生冲突,使得GridView、ListView只显示一行,那么我们就要解决他们的冲突,使用以下方式可以很好的解决此问题

1、处理GridView与ScrollView在一起冲突的问题

新建一个类文件MyGridView.java

public class MyGridView extends GridView {  

    public MyGridView(Context context, AttributeSet attrs) {  

        super(context, attrs);  

    }  

    public MyGridView(Context context) {  

        super(context);  

    }  

    public MyGridView(Context context, AttributeSet attrs, int defStyle) {  

        super(context, attrs, defStyle);  

    }  

    @Override  

    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  

        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,  

                MeasureSpec.AT_MOST);  

        super.onMeasure(widthMeasureSpec, expandSpec);  

    }  

}  

2、处理ListView与ScrollView在一起冲突的问题

新建一个类文件MyListView.java

public class MyListViewextends ListView {

public MyListView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public MyListView(Context context) {

super(context);

}

public MyListView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

@Override

public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec, expandSpec);

}

}

使用的时候直接用此控件来代替GridView、ListView就可以了

继续阅读