Merge "Fix sizes and paddings" into sc-dev
diff --git a/packages/SystemUI/res/drawable/brightness_progress_full_drawable.xml b/packages/SystemUI/res/drawable/brightness_progress_full_drawable.xml
index 41140a7..f8f455d 100644
--- a/packages/SystemUI/res/drawable/brightness_progress_full_drawable.xml
+++ b/packages/SystemUI/res/drawable/brightness_progress_full_drawable.xml
@@ -17,7 +17,8 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:autoMirrored="true">
- <item android:id="@+id/slider_foreground">
+ <item android:id="@+id/slider_foreground"
+ android:height="@dimen/rounded_slider_height">
<shape>
<size android:height="@dimen/rounded_slider_height" />
<solid android:color="?android:attr/colorControlActivated" />
diff --git a/packages/SystemUI/res/layout/quick_settings_brightness_dialog_thick.xml b/packages/SystemUI/res/layout/quick_settings_brightness_dialog_thick.xml
index 4f4b2af..6cee38d 100644
--- a/packages/SystemUI/res/layout/quick_settings_brightness_dialog_thick.xml
+++ b/packages/SystemUI/res/layout/quick_settings_brightness_dialog_thick.xml
@@ -16,8 +16,7 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
- android:layout_gravity="center"
- style="@style/BrightnessDialogContainer">
+ android:layout_gravity="center">
<com.android.systemui.settings.brightness.BrightnessSliderView
android:id="@+id/brightness_slider"
@@ -35,6 +34,8 @@
android:minHeight="48dp"
android:thumb="@null"
android:background="@null"
+ android:paddingStart="0dp"
+ android:paddingEnd="0dp"
android:progressDrawable="@drawable/brightness_progress_drawable_thick"
android:splitTrack="false"
/>
diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
index fcb56a4..32723b4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
@@ -87,6 +87,10 @@
attrs, R.styleable.PagedTileLayout, 0, 0);
mSideLabels = t.getBoolean(R.styleable.PagedTileLayout_sideLabels, false);
t.recycle();
+ if (mSideLabels) {
+ setPageMargin(context.getResources().getDimensionPixelOffset(
+ R.dimen.qs_tile_margin_horizontal));
+ }
}
private int mLastMaxHeight = -1;
@@ -341,6 +345,9 @@
// Update bottom padding, useful for removing extra space once the panel page indicator is
// hidden.
Resources res = getContext().getResources();
+ if (mSideLabels) {
+ setPageMargin(res.getDimensionPixelOffset(R.dimen.qs_tile_margin_horizontal));
+ }
setPadding(0, 0, 0,
getContext().getResources().getDimensionPixelSize(
R.dimen.qs_paged_tile_layout_padding_bottom));
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 95f7e20..27cc268 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -649,7 +649,7 @@
if (mFooter != null) {
int footerMargin = 0;
int indicatorMargin = 0;
- if (mUsingHorizontalLayout) {
+ if (mUsingHorizontalLayout && !mSideLabels) {
footerMargin = mFooterMarginStartHorizontal;
indicatorMargin = footerMargin - mVisualMarginEnd;
}
@@ -677,15 +677,19 @@
}
public Pair<Integer, Integer> getVisualSideMargins() {
- return new Pair(mVisualMarginStart, mUsingHorizontalLayout ? 0 : mVisualMarginEnd);
+ if (mSideLabels) {
+ return new Pair(0, 0);
+ } else {
+ return new Pair(mVisualMarginStart, mUsingHorizontalLayout ? 0 : mVisualMarginEnd);
+ }
}
private void updateTileLayoutMargins() {
int marginEnd = mVisualMarginEnd;
- if (mUsingHorizontalLayout) {
+ if (mUsingHorizontalLayout || mSideLabels) {
marginEnd = 0;
}
- updateMargins((View) mTileLayout, mVisualMarginStart, marginEnd);
+ updateMargins((View) mTileLayout, mSideLabels ? 0 : mVisualMarginStart, marginEnd);
}
private void updateDividerMargin() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
index 82ae2dd..8aaf84b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
@@ -370,21 +370,21 @@
QuickQSPanelController quickQSPanelController) {
mContentMarginStart = marginStart;
mContentMarginEnd = marginEnd;
- for (int i = 0; i < getChildCount(); i++) {
- View view = getChildAt(i);
- if (view == mHeaderQsPanel) {
- // QS panel doesn't lays out some of its content full width
- quickQSPanelController.setContentMargins(marginStart, marginEnd);
- } else {
- MarginLayoutParams lp = (MarginLayoutParams) view.getLayoutParams();
- lp.setMarginStart(marginStart);
- lp.setMarginEnd(marginEnd);
- view.setLayoutParams(lp);
- }
- }
+ // The clock and QQS are not direct children, but the container should be just a wrapper to
+ // be able to move them together. So we set the margins to the actual views.
+ quickQSPanelController.setContentMargins(0, 0);
+ setContentMargins(mDatePrivacyView, marginStart, marginEnd);
+ setContentMargins(mClockIconsView, marginStart, marginEnd);
updateHeadersPadding();
}
+ private void setContentMargins(View view, int marginStart, int marginEnd) {
+ MarginLayoutParams lp = (MarginLayoutParams) view.getLayoutParams();
+ lp.setMarginStart(marginStart);
+ lp.setMarginEnd(marginEnd);
+ view.setLayoutParams(lp);
+ }
+
/**
* When QS is scrolling, mClockIconsAlpha should scroll away and fade out.
*
diff --git a/packages/SystemUI/src/com/android/systemui/qs/SideLabelTileLayout.kt b/packages/SystemUI/src/com/android/systemui/qs/SideLabelTileLayout.kt
index d1deeca..1ba11ef 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/SideLabelTileLayout.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/SideLabelTileLayout.kt
@@ -35,6 +35,10 @@
return mRecords.size >= maxTiles()
}
+ override fun useSidePadding(): Boolean {
+ return false
+ }
+
/**
* Return the position from the top of the layout of the tile with this index.
*
diff --git a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
index 9e0aa5a..96712bd9 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
@@ -121,6 +121,7 @@
updateColumns();
mMaxCellHeight = mContext.getResources().getDimensionPixelSize(mCellHeightResId);
mCellMarginHorizontal = res.getDimensionPixelSize(R.dimen.qs_tile_margin_horizontal);
+ mSidePadding = useSidePadding() ? mCellMarginHorizontal / 2 : 0;
mCellMarginVertical= res.getDimensionPixelSize(R.dimen.qs_tile_margin_vertical);
mCellMarginTop = res.getDimensionPixelSize(R.dimen.qs_tile_margin_top);
mMaxAllowedRows = Math.max(1, getResources().getInteger(R.integer.quick_settings_max_rows));
@@ -132,6 +133,10 @@
return false;
}
+ protected boolean useSidePadding() {
+ return true;
+ }
+
private boolean updateColumns() {
int oldColumns = mColumns;
mColumns = Math.min(mResourceColumns, mMaxColumns);
@@ -150,8 +155,9 @@
if (heightMode == MeasureSpec.UNSPECIFIED) {
mRows = (numTiles + mColumns - 1) / mColumns;
}
+ final int gaps = mColumns - 1;
mCellWidth =
- (availableWidth - (mCellMarginHorizontal * mColumns)) / mColumns;
+ (availableWidth - (mCellMarginHorizontal * gaps) - mSidePadding * 2) / mColumns;
// Measure each QS tile.
View previousView = this;
@@ -241,8 +247,8 @@
}
protected int getColumnStart(int column) {
- return getPaddingStart() + mCellMarginHorizontal / 2 +
- column * (mCellWidth + mCellMarginHorizontal);
+ return getPaddingStart() + mSidePadding
+ + column * (mCellWidth + mCellMarginHorizontal);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
index 0adc844..e9abef4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
@@ -35,6 +35,7 @@
import androidx.annotation.Nullable;
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.ViewCompat;
+import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView;
@@ -118,11 +119,12 @@
mUiEventLogger = uiEventLogger;
mItemTouchHelper = new ItemTouchHelper(mCallbacks);
mDecoration = new TileItemDecoration(context);
- mMarginDecoration = new MarginTileDecoration();
+ mMarginDecoration = new MarginTileDecoration(!useHorizontalTiles);
mMinNumTiles = context.getResources().getInteger(R.integer.quick_settings_min_num_tiles);
mNumColumns = context.getResources().getInteger(NUM_COLUMNS_ID);
mAccessibilityDelegate = new TileAdapterDelegate();
mUseHorizontalTiles = useHorizontalTiles;
+ mSizeLookup.setSpanIndexCacheEnabled(true);
}
@Override
@@ -708,6 +710,11 @@
private static class MarginTileDecoration extends ItemDecoration {
private int mHalfMargin;
+ private final boolean mUseOutsideMargins;
+
+ private MarginTileDecoration(boolean useOutsideMargins) {
+ mUseOutsideMargins = useOutsideMargins;
+ }
public void setHalfMargin(int halfMargin) {
mHalfMargin = halfMargin;
@@ -716,11 +723,30 @@
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view,
@NonNull RecyclerView parent, @NonNull State state) {
+ if (parent.getLayoutManager() == null) return;
+
+ GridLayoutManager lm = ((GridLayoutManager) parent.getLayoutManager());
+ SpanSizeLookup span = lm.getSpanSizeLookup();
+ ViewHolder holder = parent.getChildViewHolder(view);
+ int column = span.getSpanIndex(holder.getLayoutPosition(), lm.getSpanCount());
+
if (view instanceof TextView) {
super.getItemOffsets(outRect, view, parent, state);
} else {
- outRect.left = mHalfMargin;
- outRect.right = mHalfMargin;
+ if (mUseOutsideMargins || (column != 0 && column != lm.getSpanCount() - 1)) {
+ // Using outside margins or in a column that's not leftmost or rightmost
+ // (half of the margin between columns).
+ outRect.left = mHalfMargin;
+ outRect.right = mHalfMargin;
+ } else if (column == 0) {
+ // Leftmost column when not using side margins. Should only have margin on the
+ // right.
+ outRect.right = mHalfMargin;
+ } else {
+ // Rightmost column when not using side margins. Should only have margin on the
+ // left.
+ outRect.left = mHalfMargin;
+ }
}
}
}