Add the capability to set a pinned header to SettingsPreferenceFragment
- add a FrameLayout into the preference list fragment
- add public void setPinnedHeaderView(View pinnedHeader) and
clearPinnedHeaderView() APIs for adding and clearing the pinned header
Change-Id: I50ba5dd150167e0d49cc54bee1203f46db6d7a66
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 8661956..097fb95 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -33,10 +33,12 @@
import android.preference.PreferenceGroupAdapter;
import android.text.TextUtils;
import android.util.Log;
+import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
@@ -77,6 +79,8 @@
}
};
+ private ViewGroup mPinnedHeaderFrameLayout;
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -93,6 +97,24 @@
}
@Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ final View root = super.onCreateView(inflater, container, savedInstanceState);
+ mPinnedHeaderFrameLayout = (ViewGroup) root.findViewById(R.id.pinned_header);
+ return root;
+ }
+
+ public void setPinnedHeaderView(View pinnedHeader) {
+ mPinnedHeaderFrameLayout.addView(pinnedHeader);
+ mPinnedHeaderFrameLayout.setVisibility(View.VISIBLE);
+ }
+
+ public void clearPinnedHeaderView() {
+ mPinnedHeaderFrameLayout.removeAllViews();
+ mPinnedHeaderFrameLayout.setVisibility(View.GONE);
+ }
+
+ @Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
diff --git a/src/com/android/settings/users/RestrictedProfileSettings.java b/src/com/android/settings/users/RestrictedProfileSettings.java
index 535e196..ce96c3d 100644
--- a/src/com/android/settings/users/RestrictedProfileSettings.java
+++ b/src/com/android/settings/users/RestrictedProfileSettings.java
@@ -42,10 +42,8 @@
import android.provider.ContactsContract.DisplayPhoto;
import android.support.v4.content.FileProvider;
import android.text.TextUtils;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
@@ -97,7 +95,7 @@
if (mHeaderView == null) {
mHeaderView = LayoutInflater.from(getActivity()).inflate(
R.layout.user_info_header, null);
- ((ViewGroup) getListView().getParent()).addView(mHeaderView, 0);
+ setPinnedHeaderView(mHeaderView);
mHeaderView.setOnClickListener(this);
mUserIconView = (ImageView) mHeaderView.findViewById(android.R.id.icon);
mUserNameView = (TextView) mHeaderView.findViewById(android.R.id.title);