From 29a1f9268280015d51876b74df3991c8d52245b5 Mon Sep 17 00:00:00 2001 From: Su-Shing Chen Date: Mon, 2 Dec 2019 23:26:58 +1300 Subject: [PATCH] Fix alignment of app drawer folders when multiline app names enabled (#1833) * Fix alignment of app drawer folders when multiline app names enabled The FolderIcon container's height is already set to allAppsCellHeightPx in AllAppsGridAdapter, so use match_parent to set the correct height on the FolderIcon. Then vertically align by matching BubbleTextView's onMeasure implementation. * Only adjust padding of folders in the app drawer --- lawnchair/res/layout/all_apps_folder_icon.xml | 2 +- .../android/launcher3/folder/FolderIcon.java | 22 ++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/lawnchair/res/layout/all_apps_folder_icon.xml b/lawnchair/res/layout/all_apps_folder_icon.xml index 5dd6d9d0010..f5c096d934f 100644 --- a/lawnchair/res/layout/all_apps_folder_icon.xml +++ b/lawnchair/res/layout/all_apps_folder_icon.xml @@ -21,7 +21,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/folder_icon" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="match_parent" android:layout_gravity="center" android:orientation="vertical" android:paddingLeft="@dimen/dynamic_grid_cell_padding_x" diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java index f7a8bc75fee..cff07448c04 100644 --- a/src/com/android/launcher3/folder/FolderIcon.java +++ b/src/com/android/launcher3/folder/FolderIcon.java @@ -23,14 +23,13 @@ import android.animation.ObjectAnimator; import android.content.Context; import android.graphics.Canvas; -import android.graphics.Color; +import android.graphics.Paint; import android.graphics.Point; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Parcelable; import android.support.annotation.NonNull; import android.util.AttributeSet; -import android.util.Log; import android.util.Property; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -38,7 +37,6 @@ import android.view.ViewConfiguration; import android.view.ViewGroup; import android.widget.FrameLayout; - import ch.deletescape.lawnchair.LawnchairLauncher; import ch.deletescape.lawnchair.LawnchairUtilsKt; import ch.deletescape.lawnchair.gestures.BlankGestureHandler; @@ -56,7 +54,6 @@ import com.android.launcher3.DropTarget.DragObject; import com.android.launcher3.FolderInfo; import com.android.launcher3.FolderInfo.FolderListener; -import com.android.launcher3.IconCache.ItemInfoUpdateReceiver; import com.android.launcher3.ItemInfo; import com.android.launcher3.ItemInfoWithIcon; import com.android.launcher3.Launcher; @@ -81,7 +78,6 @@ import com.android.launcher3.util.PackageUserKey; import com.android.launcher3.util.Thunk; import com.android.launcher3.widget.PendingAddShortcutInfo; - import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -657,6 +653,22 @@ protected boolean verifyDrawable(@NonNull Drawable who) { return mPreviewItemManager.verifyDrawable(who) || super.verifyDrawable(who); } + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (!mInfo.useIconMode(mLauncher) && isInAppDrawer()) { + DeviceProfile grid = mLauncher.getDeviceProfile(); + int drawablePadding = grid.allAppsIconDrawablePaddingPx; + + Paint.FontMetrics fm = mFolderName.getPaint().getFontMetrics(); + int cellHeightPx = mFolderName.getIconSize() + drawablePadding + + (int) Math.ceil(fm.bottom - fm.top); + int height = MeasureSpec.getSize(heightMeasureSpec); + setPadding(getPaddingLeft(), (height - cellHeightPx) / 2, getPaddingRight(), + getPaddingBottom()); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + @Override public void onItemsChanged(boolean animate) { if (mInfo.isCoverMode()) {