Merge "Collapse app bar while doing search in app page" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c330b2c4f4
@@ -73,6 +73,8 @@ import android.widget.Spinner;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.annotation.WorkerThread;
|
import androidx.annotation.WorkerThread;
|
||||||
|
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||||
|
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;
|
||||||
|
|
||||||
@@ -130,6 +132,8 @@ import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
|
|||||||
import com.android.settingslib.utils.ThreadUtils;
|
import com.android.settingslib.utils.ThreadUtils;
|
||||||
import com.android.settingslib.widget.settingsspinner.SettingsSpinnerAdapter;
|
import com.android.settingslib.widget.settingsspinner.SettingsSpinnerAdapter;
|
||||||
|
|
||||||
|
import com.google.android.material.appbar.AppBarLayout;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -143,7 +147,8 @@ import java.util.Set;
|
|||||||
* intent.
|
* intent.
|
||||||
*/
|
*/
|
||||||
public class ManageApplications extends InstrumentedFragment
|
public class ManageApplications extends InstrumentedFragment
|
||||||
implements View.OnClickListener, OnItemSelectedListener, SearchView.OnQueryTextListener {
|
implements View.OnClickListener, OnItemSelectedListener, SearchView.OnQueryTextListener,
|
||||||
|
MenuItem.OnActionExpandListener {
|
||||||
|
|
||||||
static final String TAG = "ManageApplications";
|
static final String TAG = "ManageApplications";
|
||||||
static final boolean DEBUG = Build.IS_DEBUGGABLE;
|
static final boolean DEBUG = Build.IS_DEBUGGABLE;
|
||||||
@@ -256,6 +261,7 @@ public class ManageApplications extends InstrumentedFragment
|
|||||||
private boolean mIsPersonalOnly;
|
private boolean mIsPersonalOnly;
|
||||||
private View mEmptyView;
|
private View mEmptyView;
|
||||||
private int mFilterType;
|
private int mFilterType;
|
||||||
|
private AppBarLayout mAppBarLayout;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
@@ -426,6 +432,9 @@ public class ManageApplications extends InstrumentedFragment
|
|||||||
|
|
||||||
mResetAppsHelper.onRestoreInstanceState(savedInstanceState);
|
mResetAppsHelper.onRestoreInstanceState(savedInstanceState);
|
||||||
|
|
||||||
|
mAppBarLayout = getActivity().findViewById(R.id.app_bar);
|
||||||
|
disableToolBarScrollableBehavior();
|
||||||
|
|
||||||
return mRootView;
|
return mRootView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -659,6 +668,7 @@ public class ManageApplications extends InstrumentedFragment
|
|||||||
|
|
||||||
final MenuItem searchMenuItem = menu.findItem(R.id.search_app_list_menu);
|
final MenuItem searchMenuItem = menu.findItem(R.id.search_app_list_menu);
|
||||||
if (searchMenuItem != null) {
|
if (searchMenuItem != null) {
|
||||||
|
searchMenuItem.setOnActionExpandListener(this);
|
||||||
mSearchView = (SearchView) searchMenuItem.getActionView();
|
mSearchView = (SearchView) searchMenuItem.getActionView();
|
||||||
mSearchView.setQueryHint(getText(R.string.search_settings));
|
mSearchView.setQueryHint(getText(R.string.search_settings));
|
||||||
mSearchView.setOnQueryTextListener(this);
|
mSearchView.setOnQueryTextListener(this);
|
||||||
@@ -670,6 +680,23 @@ public class ManageApplications extends InstrumentedFragment
|
|||||||
updateOptionsMenu();
|
updateOptionsMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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 collapsing tool bar view.
|
||||||
|
ViewCompat.setNestedScrollingEnabled(mRecyclerView, false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemActionCollapse(MenuItem item) {
|
||||||
|
// We keep the collapsed status after user cancel the search function.
|
||||||
|
mAppBarLayout.setExpanded(false /*expanded*/, false /*animate*/);
|
||||||
|
ViewCompat.setNestedScrollingEnabled(mRecyclerView, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPrepareOptionsMenu(Menu menu) {
|
public void onPrepareOptionsMenu(Menu menu) {
|
||||||
updateOptionsMenu();
|
updateOptionsMenu();
|
||||||
@@ -791,6 +818,9 @@ public class ManageApplications extends InstrumentedFragment
|
|||||||
mCurrentPkgName = entry.info.packageName;
|
mCurrentPkgName = entry.info.packageName;
|
||||||
mCurrentUid = entry.info.uid;
|
mCurrentUid = entry.info.uid;
|
||||||
startApplicationDetailsActivity();
|
startApplicationDetailsActivity();
|
||||||
|
// We disable the scrolling ability in onMenuItemActionCollapse, we should recover it
|
||||||
|
// if user selects any app item.
|
||||||
|
ViewCompat.setNestedScrollingEnabled(mRecyclerView, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -842,6 +872,20 @@ public class ManageApplications extends InstrumentedFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void disableToolBarScrollableBehavior() {
|
||||||
|
final CoordinatorLayout.LayoutParams params =
|
||||||
|
(CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams();
|
||||||
|
final AppBarLayout.Behavior behavior = new AppBarLayout.Behavior();
|
||||||
|
behavior.setDragCallback(
|
||||||
|
new AppBarLayout.Behavior.DragCallback() {
|
||||||
|
@Override
|
||||||
|
public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
params.setBehavior(behavior);
|
||||||
|
}
|
||||||
|
|
||||||
static class FilterSpinnerAdapter extends SettingsSpinnerAdapter<CharSequence> {
|
static class FilterSpinnerAdapter extends SettingsSpinnerAdapter<CharSequence> {
|
||||||
|
|
||||||
private final ManageApplications mManageApplications;
|
private final ManageApplications mManageApplications;
|
||||||
|
Reference in New Issue
Block a user