Fix app headers in settings

Use SettingsPreferenceFragment's method for pinned headers where
possible, and add a frame within the fragment for them to live in
otherwise so that this view doesn't end up on the activity.

Bug: 20886475
Change-Id: I985eb1497744ea50bfabed862e5088eb89df5b61
This commit is contained in:
Jason Monk
2015-05-06 16:00:25 -04:00
parent 0d2a8d204b
commit 20f464edde
10 changed files with 48 additions and 24 deletions

View File

@@ -45,6 +45,7 @@ import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.Spinner;
@@ -298,15 +299,14 @@ public class ManageApplications extends InstrumentedFragment
private void createHeader() {
Activity activity = getActivity();
View content = activity.findViewById(R.id.main_content);
ViewGroup contentParent = (ViewGroup) content.getParent();
FrameLayout pinnedHeader = (FrameLayout) mRootView.findViewById(R.id.pinned_header);
mSpinnerHeader = (ViewGroup) activity.getLayoutInflater()
.inflate(R.layout.apps_filter_spinner, contentParent, false);
.inflate(R.layout.apps_filter_spinner, pinnedHeader, false);
mFilterSpinner = (Spinner) mSpinnerHeader.findViewById(R.id.filter_spinner);
mFilterAdapter = new FilterSpinnerAdapter(this);
mFilterSpinner.setAdapter(mFilterAdapter);
mFilterSpinner.setOnItemSelectedListener(this);
contentParent.addView(mSpinnerHeader, 0);
pinnedHeader.addView(mSpinnerHeader, 0);
mFilterAdapter.enableFilter(getDefaultFilter());
if (mListType == LIST_TYPE_MAIN || mListType == LIST_TYPE_NOTIFICATION) {
@@ -333,7 +333,8 @@ public class ManageApplications extends InstrumentedFragment
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
if (mListType == LIST_TYPE_STORAGE) {
AppHeader.createAppHeader(getActivity(), null, mVolumeName, null);
FrameLayout pinnedHeader = (FrameLayout) mRootView.findViewById(R.id.pinned_header);
AppHeader.createAppHeader(getActivity(), null, mVolumeName, null, pinnedHeader);
}
}