From 75ed59fac92e9ff78af51d17548f260c2eb134f7 Mon Sep 17 00:00:00 2001 From: tom hsu Date: Tue, 10 May 2022 15:56:45 +0800 Subject: [PATCH] [Panlingual][frameworks] Fix when tap search bar, will leave a big blank. - Close blank layout after title disappear when search bar is expanded. Bug: b/227287277 Test: local, see b/227287277#6 Change-Id: I6b5f6990cacf6da9e17b743519ae554af32f691d --- .../internal/app/LocalePickerWithRegion.java | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/core/java/com/android/internal/app/LocalePickerWithRegion.java b/core/java/com/android/internal/app/LocalePickerWithRegion.java index a06ba9be46897..153a7b4c514b6 100644 --- a/core/java/com/android/internal/app/LocalePickerWithRegion.java +++ b/core/java/com/android/internal/app/LocalePickerWithRegion.java @@ -29,6 +29,7 @@ import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.view.MenuItem.OnActionExpandListener; import android.view.View; import android.widget.ListView; import android.widget.SearchView; @@ -64,6 +65,7 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O private int mTopDistance = 0; private String mAppPackageName; private CharSequence mTitle = null; + private OnActionExpandListener mOnActionExpandListener; /** * Other classes can register to be notified when a locale was selected. @@ -80,8 +82,10 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O private static LocalePickerWithRegion createCountryPicker(Context context, LocaleSelectedListener listener, LocaleStore.LocaleInfo parent, - boolean translatedOnly, String appPackageName) { + boolean translatedOnly, String appPackageName, + OnActionExpandListener onActionExpandListener) { LocalePickerWithRegion localePicker = new LocalePickerWithRegion(); + localePicker.setOnActionExpandListener(onActionExpandListener); boolean shouldShowTheList = localePicker.setListener(context, listener, parent, translatedOnly, appPackageName); return shouldShowTheList ? localePicker : null; @@ -95,8 +99,10 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O } public static LocalePickerWithRegion createLanguagePicker(Context context, - LocaleSelectedListener listener, boolean translatedOnly, String appPackageName) { + LocaleSelectedListener listener, boolean translatedOnly, String appPackageName, + OnActionExpandListener onActionExpandListener) { LocalePickerWithRegion localePicker = new LocalePickerWithRegion(); + localePicker.setOnActionExpandListener(onActionExpandListener); localePicker.setListener( context, listener, /* parent */ null, translatedOnly, appPackageName); return localePicker; @@ -310,7 +316,7 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O } else { LocalePickerWithRegion selector = LocalePickerWithRegion.createCountryPicker( getContext(), mListener, locale, mTranslatedOnly /* translate only */, - mAppPackageName); + mAppPackageName, mOnActionExpandListener); if (selector != null) { getFragmentManager().beginTransaction() .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) @@ -328,8 +334,11 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O inflater.inflate(R.menu.language_selection_list, menu); final MenuItem searchMenuItem = menu.findItem(R.id.locale_search_menu); - mSearchView = (SearchView) searchMenuItem.getActionView(); + if (!mAppPackageName.isEmpty() && mOnActionExpandListener != null) { + searchMenuItem.setOnActionExpandListener(mOnActionExpandListener); + } + mSearchView = (SearchView) searchMenuItem.getActionView(); mSearchView.setQueryHint(getText(R.string.search_language_hint)); mSearchView.setOnQueryTextListener(this); @@ -363,4 +372,11 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O } return false; } + + /** + * Sets OnActionExpandListener to LocalePickerWithRegion to dectect action of search bar. + */ + public void setOnActionExpandListener(OnActionExpandListener onActionExpandListener) { + mOnActionExpandListener = onActionExpandListener; + } }