两种滑动布局嵌套的时候会出现只能显示第一行,还有滑动事件冲突问题。SrcollView嵌套ListView,ListView嵌套ListView或者GridView 等。。。
一般出现这种布局,数据量都不会很大,这样重写ListView的onMeasure方法就可以了,让ListView的高度足够把所有的item都显示出来。
如果只是顶部布局需要和列表一起滑动,那建议直接把顶部布局当做header添加到listview中。
自定义list
MeasureSpec 有三种模式 由2进制的前两位来控制
MeasureSpec.EXACTLY:尺寸的值是多少,那么这个组件的长或宽就是多少。
MeasureSpec.AT_MOST:父组件有多大的空间就可以占多大空间。
MeasureSpec.UNSPECIFIED:可以随便用空间 不受限制。
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
/**
* 重写onMeasure 在scrollview中 可以 显示全部 。
* @author asf
*/
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);
}
}
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
/**
* 重写onMeasure 在scrollview中 可以 显示全部 。
* @author asf
*/
public class MyListView extends 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);
}
}