Fix 'No Apps' UI issues of ManageApplications
Fixes below UI issues - "No Apps" may not show in fragments of profile tab. Fix it by using ConstraintLayout to specify alignments of each view and removing extra padding. -- "No Apps" may flicker by moving position. The flicker is from unnecessary visibility changes. This change integrates empty view visibility control in LoadingViewController to simplify code and avoid unnecessary visibility changes. Bug: 189390795 Bug: 183398721 Test: atest com.android.settings.deviceinfo make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo Manual visual, observe UI Settings -> Storage -> Games Settings -> Notifications -> App Settings Settings > Apps > Special app access > Media management apps Change-Id: I634209c6f8466e2adae703226902190bbdf470b9
This commit is contained in:
@@ -208,7 +208,6 @@ public class ManageApplications extends InstrumentedFragment
|
||||
private ApplicationsAdapter mApplications;
|
||||
|
||||
private View mLoadingContainer;
|
||||
private View mListContainer;
|
||||
private SearchView mSearchView;
|
||||
|
||||
// Size resource used for packages whose size computation failed for some reason
|
||||
@@ -402,25 +401,21 @@ public class ManageApplications extends InstrumentedFragment
|
||||
|
||||
mRootView = inflater.inflate(R.layout.manage_applications_apps, null);
|
||||
mLoadingContainer = mRootView.findViewById(R.id.loading_container);
|
||||
mListContainer = mRootView.findViewById(R.id.list_container);
|
||||
if (mListContainer != null) {
|
||||
// Create adapter and list view here
|
||||
mEmptyView = mListContainer.findViewById(android.R.id.empty);
|
||||
mEmptyView = mRootView.findViewById(android.R.id.empty);
|
||||
mRecyclerView = mRootView.findViewById(R.id.apps_list);
|
||||
|
||||
mApplications = new ApplicationsAdapter(mApplicationsState, this, mFilter,
|
||||
savedInstanceState);
|
||||
if (savedInstanceState != null) {
|
||||
mApplications.mHasReceivedLoadEntries =
|
||||
savedInstanceState.getBoolean(EXTRA_HAS_ENTRIES, false);
|
||||
mApplications.mHasReceivedBridgeCallback =
|
||||
savedInstanceState.getBoolean(EXTRA_HAS_BRIDGE, false);
|
||||
}
|
||||
mRecyclerView = mListContainer.findViewById(R.id.apps_list);
|
||||
mRecyclerView.setItemAnimator(null);
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(
|
||||
getContext(), RecyclerView.VERTICAL, false /* reverseLayout */));
|
||||
mRecyclerView.setAdapter(mApplications);
|
||||
mApplications = new ApplicationsAdapter(mApplicationsState, this, mFilter,
|
||||
savedInstanceState);
|
||||
if (savedInstanceState != null) {
|
||||
mApplications.mHasReceivedLoadEntries =
|
||||
savedInstanceState.getBoolean(EXTRA_HAS_ENTRIES, false);
|
||||
mApplications.mHasReceivedBridgeCallback =
|
||||
savedInstanceState.getBoolean(EXTRA_HAS_BRIDGE, false);
|
||||
}
|
||||
mRecyclerView.setItemAnimator(null);
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(
|
||||
getContext(), RecyclerView.VERTICAL, false /* reverseLayout */));
|
||||
mRecyclerView.setAdapter(mApplications);
|
||||
|
||||
// We have to do this now because PreferenceFrameLayout looks at it
|
||||
// only when the view is added.
|
||||
@@ -985,16 +980,8 @@ public class ManageApplications extends InstrumentedFragment
|
||||
// overlapped by floating filter.
|
||||
if (hasFilter) {
|
||||
mManageApplications.mSpinnerHeader.setVisibility(View.VISIBLE);
|
||||
mManageApplications.mRecyclerView.setPadding(0 /* left */,
|
||||
mContext.getResources().getDimensionPixelSize(
|
||||
R.dimen.app_bar_height) /* top */,
|
||||
0 /* right */,
|
||||
0 /* bottom */);
|
||||
} else {
|
||||
mManageApplications.mSpinnerHeader.setVisibility(View.GONE);
|
||||
mManageApplications.mRecyclerView.setPadding(0 /* left */, 0 /* top */,
|
||||
0 /* right */,
|
||||
0 /* bottom */);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1044,7 +1031,8 @@ public class ManageApplications extends InstrumentedFragment
|
||||
mManageApplications = manageApplications;
|
||||
mLoadingViewController = new LoadingViewController(
|
||||
mManageApplications.mLoadingContainer,
|
||||
mManageApplications.mListContainer
|
||||
mManageApplications.mRecyclerView,
|
||||
mManageApplications.mEmptyView
|
||||
);
|
||||
mContext = manageApplications.getActivity();
|
||||
mIconDrawableFactory = IconDrawableFactory.newInstance(mContext);
|
||||
@@ -1303,11 +1291,9 @@ public class ManageApplications extends InstrumentedFragment
|
||||
mOriginalEntries = entries;
|
||||
notifyDataSetChanged();
|
||||
if (getItemCount() == 0) {
|
||||
mManageApplications.mRecyclerView.setVisibility(View.GONE);
|
||||
mManageApplications.mEmptyView.setVisibility(View.VISIBLE);
|
||||
mLoadingViewController.showEmpty(false /* animate */);
|
||||
} else {
|
||||
mManageApplications.mEmptyView.setVisibility(View.GONE);
|
||||
mManageApplications.mRecyclerView.setVisibility(View.VISIBLE);
|
||||
mLoadingViewController.showContent(false /* animate */);
|
||||
|
||||
if (mManageApplications.mSearchView != null
|
||||
&& mManageApplications.mSearchView.isVisibleToUser()) {
|
||||
@@ -1324,10 +1310,6 @@ public class ManageApplications extends InstrumentedFragment
|
||||
mLastIndex = -1;
|
||||
}
|
||||
|
||||
if (mSession.getAllApps().size() != 0
|
||||
&& mManageApplications.mListContainer.getVisibility() != View.VISIBLE) {
|
||||
mLoadingViewController.showContent(true /* animate */);
|
||||
}
|
||||
if (mManageApplications.mListType == LIST_TYPE_USAGE_ACCESS) {
|
||||
// No enabled or disabled filters for usage access.
|
||||
return;
|
||||
|
Reference in New Issue
Block a user