您的位置:首页 > 其它

关于ScrollView中嵌套GridVIew只显示一行解决方法以及GridView行高计算方法

2015-09-07 17:38 507 查看
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);
    }
}
即可解决原来只显示一行gridview冲突。
我在开发时,因为第一二行高度小于下边的行的高度,以至于最低下边一二行被遮挡,偶尔还是可以滑动Gridview,这时出现滑动冲突。经了解,GridView默认测量高度是根据第一行测量。
例如:共有五行,要求第一行行高20dp,第二行至第五行都是40dp行高。
那么整个Gridview高度会是20*5=100dp,那么计划是20+40*4=180,那么第三行至第五行会显示不出来,需要竖向滚动才能显示,这会儿又出现跟原来ScrollView与Gridview嵌套冲突的问题。
请注意避免,另外也可以复写GridView的测量方式,实现自己目的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: