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);