Loading src/com/android/launcher3/widget/picker/WidgetsListAdapter.java +6 −0 Original line number Diff line number Diff line Loading @@ -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. Loading src/com/android/launcher3/widget/picker/WidgetsRecyclerView.java +11 −4 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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 Loading Loading @@ -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(); } } Loading Loading @@ -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 { Loading Loading
src/com/android/launcher3/widget/picker/WidgetsListAdapter.java +6 −0 Original line number Diff line number Diff line Loading @@ -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. Loading
src/com/android/launcher3/widget/picker/WidgetsRecyclerView.java +11 −4 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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 Loading Loading @@ -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(); } } Loading Loading @@ -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 { Loading