Wrap the widget preview of the add item sheet with a scroll view
Test: manual
Fix: 192622015
Change-Id: I1eb676a92201970962c71194682ea70ce42b3d1b
diff --git a/res/layout/add_item_confirmation_activity.xml b/res/layout/add_item_confirmation_activity.xml
index 1aeda50..6fd4a85 100644
--- a/res/layout/add_item_confirmation_activity.xml
+++ b/res/layout/add_item_confirmation_activity.xml
@@ -65,12 +65,19 @@
android:alpha="0.7"
android:importantForAccessibility="no"/>
- <include layout="@layout/widget_cell"
- android:id="@+id/widget_cell"
+ <ScrollView
+ android:id="@+id/widget_preview_scroll_view"
android:layout_width="match_parent"
android:layout_height="0dp"
- android:layout_weight="1"
- android:layout_marginVertical="16dp" />
+ android:layout_marginVertical="16dp"
+ android:layout_weight="1">
+
+ <include
+ android:id="@+id/widget_cell"
+ layout="@layout/widget_cell"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+ </ScrollView>
<LinearLayout
android:layout_width="match_parent"
diff --git a/src/com/android/launcher3/widget/AddItemWidgetsBottomSheet.java b/src/com/android/launcher3/widget/AddItemWidgetsBottomSheet.java
index 1cc7f53..1b66c02 100644
--- a/src/com/android/launcher3/widget/AddItemWidgetsBottomSheet.java
+++ b/src/com/android/launcher3/widget/AddItemWidgetsBottomSheet.java
@@ -25,10 +25,12 @@
import android.graphics.Insets;
import android.graphics.Rect;
import android.util.AttributeSet;
+import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.WindowInsets;
+import android.widget.ScrollView;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.R;
@@ -44,6 +46,7 @@
private static final int DEFAULT_CLOSE_DURATION = 200;
private final Rect mInsets;
+ private ScrollView mWidgetPreviewScrollView;
public AddItemWidgetsBottomSheet(Context context, AttributeSet attrs) {
this(context, attrs, 0);
@@ -68,6 +71,19 @@
}
@Override
+ public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
+ if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+ mNoIntercept = false;
+ // Suppress drag to dismiss gesture if the scroll view is being scrolled.
+ if (getPopupContainer().isEventOverView(mWidgetPreviewScrollView, ev)
+ && mWidgetPreviewScrollView.getScrollY() > 0) {
+ mNoIntercept = true;
+ }
+ }
+ return super.onControllerInterceptTouchEvent(ev);
+ }
+
+ @Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int width = r - l;
int height = b - t;
@@ -104,6 +120,7 @@
protected void onFinishInflate() {
super.onFinishInflate();
mContent = findViewById(R.id.add_item_bottom_sheet_content);
+ mWidgetPreviewScrollView = findViewById(R.id.widget_preview_scroll_view);
}
private void animateOpen() {