OSDN Git Service

Fix center-align issue in widgets bottom sheet
authorTony <twickham@google.com>
Wed, 3 May 2017 04:56:27 +0000 (21:56 -0700)
committerTony Wickham <twickham@google.com>
Thu, 4 May 2017 22:53:15 +0000 (15:53 -0700)
- Remove paddingStart
- To add padding for multiple widgets, add empty view to scrollview

Bug: 37918677
Change-Id: I5ec1208765874dda1c4439f60aaeb989c06ccd63

res/layout/widgets_bottom_sheet.xml
src/com/android/launcher3/widget/WidgetsBottomSheet.java

index 826235b..c2270d2 100644 (file)
@@ -19,7 +19,6 @@
     android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:paddingStart="16dp"
     android:paddingTop="28dp"
     android:background="?android:attr/colorPrimary"
     android:elevation="@dimen/deep_shortcuts_elevation"
index a423154..5fe00c2 100644 (file)
@@ -133,10 +133,19 @@ public class WidgetsBottomSheet extends AbstractFloatingView implements Insettab
             }
         }
 
-        // If there is only one widget, we want to center it instead of left-align.
-        WidgetsBottomSheet.LayoutParams params = (WidgetsBottomSheet.LayoutParams)
-                widgetRow.getLayoutParams();
-        params.gravity = widgets.size() == 1 ? Gravity.CENTER_HORIZONTAL : Gravity.START;
+        if (widgets.size() == 1) {
+            // If there is only one widget, we want to center it instead of left-align.
+            WidgetsBottomSheet.LayoutParams params = (WidgetsBottomSheet.LayoutParams)
+                    widgetRow.getLayoutParams();
+            params.gravity = Gravity.CENTER_HORIZONTAL;
+        } else {
+            // Otherwise, add an empty view to the start as padding (but still scroll edge to edge).
+            View leftPaddingView = LayoutInflater.from(getContext()).inflate(
+                    R.layout.widget_list_divider, widgetRow, false);
+            leftPaddingView.getLayoutParams().width = Utilities.pxFromDp(
+                    16, getResources().getDisplayMetrics());
+            widgetCells.addView(leftPaddingView, 0);
+        }
     }
 
     private void addDivider(ViewGroup parent) {