Fixing Search box not getting aligned properly based on insets

Bug: 77893699
Change-Id: If195395af7858c3115d695a308810480474541a5
This commit is contained in:
Sunny Goyal 2018-04-30 12:35:16 -07:00
parent 3aa3eb51e2
commit df296898da
2 changed files with 12 additions and 4 deletions

View File

@ -20,7 +20,6 @@
android:layout_height="@dimen/all_apps_search_bar_field_height"
android:layout_centerHorizontal="true"
android:layout_gravity="top|center_horizontal"
android:layout_marginTop="8dp"
android:background="@drawable/bg_all_apps_searchbox"
android:elevation="1dp"
android:focusableInTouchMode="true"

View File

@ -62,6 +62,10 @@ public class AppsSearchContainerLayout extends ExtendedEditText
private AlphabeticalAppsList mApps;
private AllAppsContainerView mAppsView;
// This value was used to position the QSB. We store it here for translationY animations.
private final float mFixedTranslationY;
private final float mMarginTopAdjusting;
public AppsSearchContainerLayout(Context context) {
this(context, null);
}
@ -79,6 +83,9 @@ public class AppsSearchContainerLayout extends ExtendedEditText
mSearchQueryBuilder = new SpannableStringBuilder();
Selection.setSelection(mSearchQueryBuilder, 0);
mFixedTranslationY = getTranslationY();
mMarginTopAdjusting = mFixedTranslationY - getPaddingTop();
// Update the hint to contain the icon.
// Prefix the original hint with two spaces. The first space gets replaced by the icon
// using span. The second space is used for a singe space character between the hint
@ -195,14 +202,16 @@ public class AppsSearchContainerLayout extends ExtendedEditText
@Override
public void setInsets(Rect insets) {
MarginLayoutParams mlp = (MarginLayoutParams) getLayoutParams();
mlp.topMargin = Math.round(Math.max(-mFixedTranslationY, insets.top - mMarginTopAdjusting));
requestLayout();
DeviceProfile dp = mLauncher.getDeviceProfile();
if (dp.isVerticalBarLayout()) {
mLauncher.getAllAppsController().setScrollRangeDelta(0);
} else {
MarginLayoutParams mlp = ((MarginLayoutParams) getLayoutParams());
int myBot = mlp.topMargin + (int) getTranslationY() + mlp.height;
mLauncher.getAllAppsController().setScrollRangeDelta(
dp.hotseatBarBottomPaddingPx + myBot);
insets.bottom + mlp.topMargin + mFixedTranslationY);
}
}
}