AndroidStaggeredGrid icon indicating copy to clipboard operation
AndroidStaggeredGrid copied to clipboard

When the device is rotated, listview was overlapped.

Open kyungin-park opened this issue 10 years ago • 4 comments

I used the column count "2" for both of portrait and landscape. When the device is rotated, listview was overlapped. I finally found what is the cause of the problem and I am sharing with you guys to prevent having the same problem.

On StaggeredGridView.java file,

 //////////// I added mIsRotated variable below.
private boolean mIsRotated = false;

@Override
protected void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    mIsRotated = true;
}



@Override
protected void onSizeChanged(int w, int h) {
    ...............
    //////////// I checked mIsRotated variable instead of mColumnCount.
    // if (mColumnCount != newColumnCount) {
            if(mIsRotated) {
        ............
                   requestLayout();
        //////////// I added code below after layout changes.
                    mIsRotated = false;
    }
}

kyungin-park avatar May 29 '15 09:05 kyungin-park

Set column_count attribute for the two orientations instead of setting it once: E.g.: staggered:column_count_landscape="4" staggered:column_count_portrait="2"

yamila-fraiman avatar Jun 09 '15 07:06 yamila-fraiman

I needed to set 2 for both of them(portrait, landscape). That's the reason why I modified the code...

kyungin-park avatar Jun 09 '15 12:06 kyungin-park

@kyungin-park it sounds like you found a fix for the the overlapping rotation issue. I attempted a CustomStaggeredGridView with your changes, but it does not seem to work, was the code you posted complete or was there more to it, are there further instructions?

mrdjohnson avatar Sep 20 '15 15:09 mrdjohnson

@DocJava In my case, the code I mentioned was enough to solve this problem... Hmm... The cause was that requestLayout() should be called after rotation....

kyungin-park avatar Sep 21 '15 00:09 kyungin-park