From 0ef81fdc2265c764d6ebd57cf44d4a0bd15132b7 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Fri, 16 Sep 2016 12:38:09 -0700 Subject: Uses a TransformingTouchDelegate to extend touch target for widgets list. The widget row contents were being clipped, which made it seem like the horizontal scroll was broken. Bug: 30023607 Change-Id: I00b0c334bbb0faf166d4cd168392cc494ed732e0 --- res/layout/widgets_list_row_view.xml | 4 +-- .../launcher3/widget/WidgetsContainerView.java | 33 +++++++++++----------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/res/layout/widgets_list_row_view.xml b/res/layout/widgets_list_row_view.xml index 4687b3891..30a34d4f9 100644 --- a/res/layout/widgets_list_row_view.xml +++ b/res/layout/widgets_list_row_view.xml @@ -59,8 +59,8 @@ android:id="@+id/widgets_cell_list" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="@dimen/widget_row_padding" - android:layout_marginLeft="@dimen/widget_row_padding" + android:paddingStart="@dimen/widget_row_padding" + android:paddingEnd="0dp" android:orientation="horizontal" android:divider="@drawable/widgets_row_divider" android:showDividers="middle"/> diff --git a/src/com/android/launcher3/widget/WidgetsContainerView.java b/src/com/android/launcher3/widget/WidgetsContainerView.java index 538d4c988..083103cf0 100644 --- a/src/com/android/launcher3/widget/WidgetsContainerView.java +++ b/src/com/android/launcher3/widget/WidgetsContainerView.java @@ -48,6 +48,7 @@ import com.android.launcher3.model.WidgetsModel; import com.android.launcher3.userevent.nano.LauncherLogProto; import com.android.launcher3.userevent.nano.LauncherLogProto.Target; import com.android.launcher3.util.Thunk; +import com.android.launcher3.util.TransformingTouchDelegate; /** * The widgets list view container. @@ -63,11 +64,11 @@ public class WidgetsContainerView extends BaseContainerView private IconCache mIconCache; private final Rect mTmpBgPaddingRect = new Rect(); - private final Rect mTmpRect = new Rect(); /* Recycler view related member variables */ private WidgetsRecyclerView mRecyclerView; private WidgetsListAdapter mAdapter; + private TransformingTouchDelegate mRecyclerViewTouchDelegate; /* Touch handling related member variables. */ private Toast mWidgetInstructionToast; @@ -94,30 +95,30 @@ public class WidgetsContainerView extends BaseContainerView } } + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + getRevealView().getBackground().getPadding(mTmpBgPaddingRect); + mRecyclerViewTouchDelegate.setBounds( + mRecyclerView.getLeft() - mTmpBgPaddingRect.left, + mRecyclerView.getTop() - mTmpBgPaddingRect.top, + mRecyclerView.getRight() + mTmpBgPaddingRect.right, + mRecyclerView.getBottom() + mTmpBgPaddingRect.bottom); + } + @Override protected void onFinishInflate() { super.onFinishInflate(); mRecyclerView = (WidgetsRecyclerView) getContentView().findViewById(R.id.widgets_list_view); mRecyclerView.setAdapter(mAdapter); mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + mRecyclerViewTouchDelegate = new TransformingTouchDelegate(mRecyclerView); } @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - getRevealView().getBackground().getPadding(mTmpBgPaddingRect); - if (Utilities.isRtl(getResources())) { - getContentView().setPadding(0, mTmpBgPaddingRect.top, mTmpBgPaddingRect.right, - mTmpBgPaddingRect.bottom); - mTmpRect.set(mTmpBgPaddingRect.left, 0, 0, 0); - mRecyclerView.updateBackgroundPadding(mTmpRect); - } else { - getContentView().setPadding(mTmpBgPaddingRect.left, mTmpBgPaddingRect.top, 0, - mTmpBgPaddingRect.bottom); - mTmpRect.set(0, 0, mTmpBgPaddingRect.right, 0); - mRecyclerView.updateBackgroundPadding(mTmpRect); - } - - super.onMeasure(widthMeasureSpec, heightMeasureSpec); + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + ((View) mRecyclerView.getParent()).setTouchDelegate(mRecyclerViewTouchDelegate); } // -- cgit v1.2.3