sysui: update wallet card widths on configuration changes

When opening a foldable the animation is still not perfect because the
view is laid out before the carousel has a chance to set the new
adapter.

Fixes: 187516046
Test: manual testing
Change-Id: If4cd56053ce7599260d8d3bb5dbbdce7236442e1
This commit is contained in:
Thales Lima
2021-07-12 12:35:46 +01:00
parent 5eb2ccc35b
commit 5359636218
2 changed files with 12 additions and 7 deletions

View File

@@ -189,6 +189,15 @@ public class WalletCardCarousel extends RecyclerView {
return mCardHeightPx;
}
/**
* Sets the adapter again in the RecyclerView, updating the ViewHolders children's layout.
* This is needed when changing the state of the device (eg fold/unfold) so the ViewHolders are
* recreated.
*/
void resetAdapter() {
setAdapter(mWalletCardCarouselAdapter);
}
/**
* Returns true if the data set is changed.
*/
@@ -376,8 +385,8 @@ public class WalletCardCarousel extends RecyclerView {
CardView cardView = viewHolder.mCardView;
cardView.setRadius(mCornerRadiusPx);
ViewGroup.LayoutParams layoutParams = cardView.getLayoutParams();
layoutParams.width = mCardWidthPx;
layoutParams.height = mCardHeightPx;
layoutParams.width = getCardWidthPx();
layoutParams.height = getCardHeightPx();
view.setTag(viewHolder);
return viewHolder;
}

View File

@@ -99,17 +99,13 @@ public class WalletView extends FrameLayout implements WalletCardCarousel.OnCard
mCardCarousel.setExpectedViewWidth(getWidth());
}
@Override
protected void onConfigurationChanged(Configuration newConfig) {
updateViewForOrientation(newConfig.orientation);
}
private void updateViewForOrientation(@Configuration.Orientation int orientation) {
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
renderViewPortrait();
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
renderViewLandscape();
}
mCardCarousel.resetAdapter(); // necessary to update cards width
ViewGroup.LayoutParams params = mCardCarouselContainer.getLayoutParams();
if (params instanceof MarginLayoutParams) {
((MarginLayoutParams) params).topMargin =