When the device is rotated, listview was overlapped.
kyungin-park opened this issue · 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;
}
}
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"
I needed to set 2 for both of them(portrait, landscape). That's the reason why I modified the code...
@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?
@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....