在GridView的滚动上滚动整个屏幕

时间:2015-04-08 11:34:26

标签: android

我有一个片段,在这个片段下面是一个容器(有时)包含一个GridWiew。如何在GridView的滚动条上滚动整个屏幕?

2 个答案:

答案 0 :(得分:0)

如果您希望滚动子项,ScrollView应该是层次结构的根。

答案 1 :(得分:0)

首先,您必须添加scrollView作为父级,它将是片段和gridView的父级。在那种情况下,基于gridview滚动内容不是理想的解决方案,因为它将导致2滚动。相反,您必须禁用gridview的滚动并向gridview添加高度。这会删除回收功能。

固定高度的GridView

package com.mytestapp
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.GridView;
import android.content.Context;
public class ExpandableHeightGridView extends GridView {

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

    ExpandableHeightGridView(Context context) {
        super(context);
    }

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

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        // Calculate entire height by providing a very large height hint.
        // View.MEASURED_SIZE_MASK represents the largest height possible.
        int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);

        ViewGroup.LayoutParams params = getLayoutParams();
        params.height = getMeasuredHeight();
    }

}