Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f0c5ac3 authored by Stevie Kideckel's avatar Stevie Kideckel Committed by Android (Google) Code Review
Browse files

Merge "Account for header margin depending on which header is selected" into sc-dev

parents f2ec2032 1059c30f
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -298,6 +298,12 @@ public class WidgetsListAdapter extends Adapter<ViewHolder> implements OnHeaderC
        scrollToPositionAndMaintainOffset(positionForPackageUserKey, topForPackageUserKey);
    }

    /** Returns the position of the currently expanded header, or empty if it's not present. */
    public OptionalInt getSelectedHeaderPosition() {
        if (mWidgetsContentVisiblePackageUserKey == null) return OptionalInt.empty();
        return getPositionForPackageUserKey(mWidgetsContentVisiblePackageUserKey);
    }

    /**
     * Returns the position of {@code key} in {@link #mVisibleEntries}, or  empty if it's not
     * present.
+11 −4
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ public class WidgetsRecyclerView extends BaseRecyclerView implements OnItemTouch
    private HeaderViewDimensionsProvider mHeaderViewDimensionsProvider;
    private int mLastVisibleWidgetContentTableHeight = 0;
    private int mWidgetHeaderHeight = 0;
    private final int mCollapsedHeaderBottomMarginSize;
    @Nullable private OnContentChangeListener mOnContentChangeListener;

    public WidgetsRecyclerView(Context context) {
@@ -71,6 +72,10 @@ public class WidgetsRecyclerView extends BaseRecyclerView implements OnItemTouch

        ActivityContext activity = ActivityContext.lookupContext(getContext());
        DeviceProfile grid = activity.getDeviceProfile();

        // The bottom margin used when the header is not expanded.
        mCollapsedHeaderBottomMarginSize =
                getResources().getDimensionPixelSize(R.dimen.widget_list_entry_bottom_margin);
    }

    @Override
@@ -182,10 +187,7 @@ public class WidgetsRecyclerView extends BaseRecyclerView implements OnItemTouch
                    && mLastVisibleWidgetContentTableHeight == 0
                    && view.getMeasuredHeight() > 0) {
                // This assumes all header views are of the same height.
                RecyclerView.LayoutParams layoutParams =
                        (RecyclerView.LayoutParams) view.getLayoutParams();
                mWidgetHeaderHeight = view.getMeasuredHeight() + layoutParams.topMargin
                    + layoutParams.bottomMargin;
                mWidgetHeaderHeight = view.getMeasuredHeight();
            }
        }

@@ -279,12 +281,17 @@ public class WidgetsRecyclerView extends BaseRecyclerView implements OnItemTouch
        if (untilIndex > mAdapter.getItems().size()) {
            untilIndex = mAdapter.getItems().size();
        }
        int expandedHeaderPosition = mAdapter.getSelectedHeaderPosition().orElse(-1);
        int totalItemsHeight = 0;
        for (int i = 0; i < untilIndex; i++) {
            WidgetsListBaseEntry entry = mAdapter.getItems().get(i);
            if (entry instanceof WidgetsListHeaderEntry
                    || entry instanceof WidgetsListSearchHeaderEntry) {
                totalItemsHeight += mWidgetHeaderHeight;
                if (expandedHeaderPosition != i) {
                    // If the header is collapsed, include the bottom margin it will use.
                    totalItemsHeight += mCollapsedHeaderBottomMarginSize;
                }
            } else if (entry instanceof WidgetsListContentEntry) {
                totalItemsHeight += mLastVisibleWidgetContentTableHeight;
            } else {