SrcollView嵌套ListView处理方法

两种滑动布局嵌套的时候会出现只能显示第一行,还有滑动事件冲突问题。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);  
    }  
}  

你可能感兴趣的:(SrcollView嵌套ListView处理方法)