Fixing tab width and panner not aligned with the all-apps icons

Bug: 234008165
Test: Verified on device
Change-Id: Ibec3eed4aef730439d79b086d6ae23b63b66361e
Merged-in: Ibec3eed4aef730439d79b086d6ae23b63b66361e
This commit is contained in:
Sunny Goyal
2022-07-11 11:03:54 -07:00
committed by Brandon Dayauon
parent 3b042d6139
commit 524f4c4fba
3 changed files with 67 additions and 12 deletions
@@ -15,6 +15,8 @@
*/
package com.android.launcher3.allapps;
import static com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip.getTabWidth;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
@@ -87,14 +89,10 @@ public class WorkEduCard extends FrameLayout implements
}
@Override
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationStart(Animation animation) {
}
public void onAnimationStart(Animation animation) { }
private void removeCard() {
if (mPosition == -1) {
@@ -107,8 +105,14 @@ public class WorkEduCard extends FrameLayout implements
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int size = MeasureSpec.getSize(widthMeasureSpec);
findViewById(R.id.wrapper).getLayoutParams().width = getTabWidth(getContext(), size);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
public void setPosition(int position) {
mPosition = position;
}
}
@@ -16,20 +16,24 @@
package com.android.launcher3.allapps;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TURN_OFF_WORK_APPS_TAP;
import static com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip.getTabWidth;
import android.content.Context;
import android.graphics.Insets;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup.MarginLayoutParams;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.widget.Button;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Insettable;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.anim.KeyboardInsetAnimationCallback;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.model.StringCache;
import com.android.launcher3.views.ActivityContext;
import com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip;
@@ -85,16 +89,41 @@ public class WorkModeSwitch extends Button implements Insettable, View.OnClickLi
@Override
public void setInsets(Rect insets) {
int bottomInset = insets.bottom - mInsets.bottom;
mInsets.set(insets);
ViewGroup.MarginLayoutParams marginLayoutParams =
(ViewGroup.MarginLayoutParams) getLayoutParams();
if (marginLayoutParams != null) {
marginLayoutParams.bottomMargin = bottomInset + marginLayoutParams.bottomMargin;
ViewGroup.MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams();
if (lp != null) {
int bottomMargin = getResources().getDimensionPixelSize(R.dimen.work_fab_margin_bottom);
if (FeatureFlags.ENABLE_FLOATING_SEARCH_BAR.get()) {
bottomMargin <<= 1; // Double margin to add space above search bar.
bottomMargin += getResources().getDimensionPixelSize(R.dimen.qsb_widget_height);
}
DeviceProfile dp = ActivityContext.lookupContext(getContext()).getDeviceProfile();
if (!dp.isGestureMode) {
if (dp.isTaskbarPresent) {
bottomMargin += dp.taskbarSize;
} else {
bottomMargin += insets.bottom;
}
}
lp.bottomMargin = bottomMargin;
}
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
DeviceProfile dp = ActivityContext.lookupContext(getContext()).getDeviceProfile();
View parent = (View) getParent();
int size = parent.getWidth() - parent.getPaddingLeft() - parent.getPaddingRight()
- 2 * dp.allAppsLeftRightPadding;
int tabWidth = getTabWidth(getContext(), size);
int shift = (size - tabWidth) / 2 + dp.allAppsLeftRightPadding;
setTranslationX(Utilities.isRtl(getResources()) ? shift : -shift);
}
@Override
public void onActivePageChanged(int page) {
mOnWorkTab = page == ActivityAllAppsContainerView.AdapterHolder.WORK;
@@ -23,7 +23,9 @@ import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.pageindicators.PageIndicator;
import com.android.launcher3.views.ActivityContext;
/**
* Supports two indicator colors, dedicated for personal and work tabs.
@@ -72,6 +74,26 @@ public class PersonalWorkSlidingTabStrip extends LinearLayout implements PageInd
return false;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (getPaddingLeft() == 0 && getPaddingRight() == 0) {
// If any padding is not specified, restrict the width to emulate padding
int size = MeasureSpec.getSize(widthMeasureSpec);
size = getTabWidth(getContext(), size);
widthMeasureSpec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
/**
* Returns distance between left and right app icons
*/
public static int getTabWidth(Context context, int totalWidth) {
DeviceProfile grid = ActivityContext.lookupContext(context).getDeviceProfile();
int iconPadding = totalWidth / grid.numShownAllAppsColumns - grid.allAppsIconSizePx;
return totalWidth - iconPadding;
}
/**
* Interface definition for a callback to be invoked when an active page has been changed.
*/