listview,gridview,等与ScrollView 的冲突解决

来源:互联网 发布:成对比较矩阵word 编辑:程序博客网 时间:2024/05/19 13:15

     项目过程中常常会需要将Scrollview结合起来使用 但是你会发现listview或者gridview会变形  应该说是尺寸会缩得很小,这个时候用官方自带的就不行了 。你需要自定义一个。

 比如说listview 这么写

public class MyListView extends ListView {


public MyListView(Context context) {
super(context);
}


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


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


@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);


super.onMeasure(widthMeasureSpec, expandSpec);
}


}

同理 Girdview 如下

/**
 * 
 * 让GridView可以做ScrollView的子控件,但尺寸不会减小
 */
public class MyGridView extends GridView {

    public MyGridView(Context context) {  
        super(context);  
    }  
    
    public MyGridView(Context context, AttributeSet attrs) {  
        super(context, attrs);  
    }  
    
    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);  
    }    
}  

0 0