Merge "Use padding in pages instead of pageMargin" into sc-dev

This commit is contained in:
Fabian Kozynski
2021-06-02 15:04:45 +00:00
committed by Android (Google) Code Review
3 changed files with 22 additions and 4 deletions

View File

@@ -18,4 +18,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tile_page"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
android:layout_height="match_parent"
android:paddingStart="@dimen/notification_side_paddings"
android:paddingEnd="@dimen/notification_side_paddings"
android:clipChildren="false"
android:clipToPadding="false" />

View File

@@ -80,8 +80,22 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
@Override
public void setPageMargin(int marginPixels) {
if (marginPixels != getPageMargin()) {
super.setPageMargin(marginPixels);
// Using page margins creates some rounding issues that interfere with the correct position
// in the onPageChangedListener and therefore present bad positions to the PageIndicator.
// Instead, we use negative margins in the container and positive padding in the pages,
// matching the margin set from QSContainerImpl (note that new pages will always be inflated
// with the correct value.
// QSContainerImpl resources are set onAttachedView, so this view will always have the right
// values when attached.
MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams();
lp.setMarginStart(-marginPixels);
lp.setMarginEnd(-marginPixels);
setLayoutParams(lp);
int nPages = mPages.size();
for (int i = 0; i < nPages; i++) {
View v = mPages.get(i);
v.setPadding(marginPixels, v.getPaddingTop(), marginPixels, v.getPaddingBottom());
}
}

View File

@@ -295,7 +295,7 @@ public class QSContainerImpl extends FrameLayout {
qsPanelController.setContentMargins(mContentPadding, mContentPadding);
// Set it as double the side margin (to simulate end margin of current page +
// start margin of next page).
qsPanelController.setPageMargin(2 * mSideMargins);
qsPanelController.setPageMargin(mSideMargins);
} else if (view == mHeader) {
// No content padding for the header.
} else {