Android 当 GridView 遇到 ScrollView (高度错误和顶部问题)

当 GridView 或者 ListView 放到 ScrollView 中时,其实会遇到一个比较奇葩的问题,就是 GridView(ListView) 高度展开的不对,而且会默认最顶部在 GridView(ListView) 的最顶,并不是我们想要的结果,可以通过以下方法解决:

public class ExpandedGridView extends GridView {

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

    public ExpandedGridView(Context context) {
        super(context);
        init();
    }

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

    private void init() {
        //修复位置不在最顶的问题
        setFocusable(false);
    }

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //修复高度大小问题
        int expandSpec = View.MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, View.MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}

您可能还喜欢...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据