Merge "Remove the large space when searching region list" into sc-dev

This commit is contained in:
Tsung-Mao Fang
2021-06-09 05:34:23 +00:00
committed by Android (Google) Code Review

View File

@@ -27,6 +27,7 @@ import android.widget.LinearLayout;
import android.widget.SearchView; import android.widget.SearchView;
import android.widget.TextView; import android.widget.TextView;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@@ -35,6 +36,8 @@ import com.android.settings.core.InstrumentedFragment;
import com.android.settings.datetime.timezone.model.TimeZoneData; import com.android.settings.datetime.timezone.model.TimeZoneData;
import com.android.settings.datetime.timezone.model.TimeZoneDataLoader; import com.android.settings.datetime.timezone.model.TimeZoneDataLoader;
import com.google.android.material.appbar.AppBarLayout;
import java.util.Locale; import java.util.Locale;
/** /**
@@ -43,12 +46,15 @@ import java.util.Locale;
* The search matches the prefix of words in the search text. * The search matches the prefix of words in the search text.
*/ */
public abstract class BaseTimeZonePicker extends InstrumentedFragment public abstract class BaseTimeZonePicker extends InstrumentedFragment
implements SearchView.OnQueryTextListener { implements SearchView.OnQueryTextListener, MenuItem.OnActionExpandListener {
public static final String EXTRA_RESULT_REGION_ID = public static final String EXTRA_RESULT_REGION_ID =
"com.android.settings.datetime.timezone.result_region_id"; "com.android.settings.datetime.timezone.result_region_id";
public static final String EXTRA_RESULT_TIME_ZONE_ID = public static final String EXTRA_RESULT_TIME_ZONE_ID =
"com.android.settings.datetime.timezone.result_time_zone_id"; "com.android.settings.datetime.timezone.result_time_zone_id";
protected AppBarLayout mAppBarLayout;
private final int mTitleResId; private final int mTitleResId;
private final int mSearchHintResId; private final int mSearchHintResId;
private final boolean mSearchEnabled; private final boolean mSearchEnabled;
@@ -88,6 +94,7 @@ public abstract class BaseTimeZonePicker extends InstrumentedFragment
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext(), mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext(),
LinearLayoutManager.VERTICAL, /* reverseLayout */ false)); LinearLayoutManager.VERTICAL, /* reverseLayout */ false));
mRecyclerView.setAdapter(mAdapter); mRecyclerView.setAdapter(mAdapter);
mAppBarLayout = getActivity().findViewById(R.id.app_bar);
// Initialize TimeZoneDataLoader only when mRecyclerView is ready to avoid race // Initialize TimeZoneDataLoader only when mRecyclerView is ready to avoid race
// during onDateLoaderReady callback. // during onDateLoaderReady callback.
@@ -121,6 +128,7 @@ public abstract class BaseTimeZonePicker extends InstrumentedFragment
inflater.inflate(R.menu.time_zone_base_search_menu, menu); inflater.inflate(R.menu.time_zone_base_search_menu, menu);
final MenuItem searchMenuItem = menu.findItem(R.id.time_zone_search_menu); final MenuItem searchMenuItem = menu.findItem(R.id.time_zone_search_menu);
searchMenuItem.setOnActionExpandListener(this);
mSearchView = (SearchView) searchMenuItem.getActionView(); mSearchView = (SearchView) searchMenuItem.getActionView();
mSearchView.setQueryHint(getText(mSearchHintResId)); mSearchView.setQueryHint(getText(mSearchHintResId));
@@ -148,6 +156,21 @@ public abstract class BaseTimeZonePicker extends InstrumentedFragment
} }
} }
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
// To prevent a large space on tool bar.
mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
// To prevent user can expand the collpasing tool bar view.
ViewCompat.setNestedScrollingEnabled(mRecyclerView, false);
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
ViewCompat.setNestedScrollingEnabled(mRecyclerView, true);
return true;
}
@Override @Override
public boolean onQueryTextSubmit(String query) { public boolean onQueryTextSubmit(String query) {
return false; return false;