etsy / AndroidStaggeredGrid

An Android staggered grid view which supports multiple columns with rows of varying sizes.
https://github.com/etsy/AndroidStaggeredGrid
4.76k stars 1.13k forks source link

When w,h =0, onSizeChanged should not be continued... #177

Open kyungin-park opened 9 years ago

kyungin-park commented 9 years ago

I wanted to add this StaggeredGridView in PullToRefresh library, but I failed it because onSizeChanged is called first while creating refreshable view (StaggeredGridView) on PullToRefresh. And then onMeasure is called. onMeasure can not remake mColumnLefts since onSizeChanged has already made mColumnLefts, mColumnBottoms, mColumnTops, etc even though w and h was 0.

So,

StaggeredGridView.java

@Override
protected void onSizeChanged(int w, int h) {
    super.onSizeChanged(w, h);

///////////////// This kind of code is needed.
    if(w <= 0 || h <= 0) {
        return;
    }

Please consider this. Thank you a lot for your great work~~

zyzof commented 9 years ago

I had a similar issue on the Kindle Fire with the options bar along the right edge of the screen. The layout calculations were getting calculated initially using the whole screen width of 1280px, then again with (screen width - option bar width). I was able to fix this issue by re-calculating the StaggeredGridView's mColumnLefts if the mColumnWidth had changed. See https://github.com/etsy/AndroidStaggeredGrid/pull/179