Merge "Show group headers correctly"
diff --git a/res/layout/group_browse_list_account_header.xml b/res/layout/group_browse_list_account_header.xml
index da6b960..36c6d7a 100644
--- a/res/layout/group_browse_list_account_header.xml
+++ b/res/layout/group_browse_list_account_header.xml
@@ -18,14 +18,20 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_marginRight="?attr/list_item_padding_right"
-    android:minHeight="?attr/list_item_header_height"
     android:orientation="vertical">
 
+    <!-- Only visible when it is the first element in the list. -->
+    <View
+        android:id="@+id/header_extra_top_padding"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/contact_browser_list_top_margin" />
+
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:paddingLeft="?attr/list_item_header_text_indent"
+        android:minHeight="?attr/list_item_header_height"
+        android:paddingLeft="?attr/list_item_padding_left"
+        android:paddingRight="?attr/list_item_padding_right"
         android:orientation="horizontal">
 
         <TextView
@@ -33,6 +39,8 @@
             android:layout_width="0px"
             android:layout_height="wrap_content"
             android:layout_weight="1"
+            android:layout_gravity="center_vertical"
+            android:paddingLeft="?attr/list_item_header_text_indent"
             android:textAppearance="?android:attr/textAppearanceSmall"
             android:textColor="@color/people_app_theme_color"
             android:textStyle="bold"
diff --git a/res/layout/group_browse_list_fragment.xml b/res/layout/group_browse_list_fragment.xml
index 0d8d4f3..eea7ab0 100644
--- a/res/layout/group_browse_list_fragment.xml
+++ b/res/layout/group_browse_list_fragment.xml
@@ -26,7 +26,6 @@
       class="com.android.contacts.widget.AutoScrollListView"
       android:layout_width="match_parent"
       android:layout_height="0dip"
-      android:paddingTop="@dimen/contact_browser_list_top_margin"
       android:paddingLeft="16dip"
       android:paddingRight="16dip"
       android:scrollbarStyle="outsideOverlay"
diff --git a/src/com/android/contacts/group/GroupBrowseListAdapter.java b/src/com/android/contacts/group/GroupBrowseListAdapter.java
index 63a5d2c..8affab3 100644
--- a/src/com/android/contacts/group/GroupBrowseListAdapter.java
+++ b/src/com/android/contacts/group/GroupBrowseListAdapter.java
@@ -164,9 +164,20 @@
             bindHeaderView(entry, viewCache);
             viewCache.accountHeader.setVisibility(View.VISIBLE);
             viewCache.divider.setVisibility(View.GONE);
+            if (position == 0) {
+                // Have the list's top padding in the first header.
+                //
+                // This allows the ListView to show correct fading effect on top.
+                // If we have topPadding in the ListView itself, an inappropriate padding is
+                // inserted between fading items and the top edge.
+                viewCache.accountHeaderExtraTopPadding.setVisibility(View.VISIBLE);
+            } else {
+                viewCache.accountHeaderExtraTopPadding.setVisibility(View.GONE);
+            }
         } else {
             viewCache.accountHeader.setVisibility(View.GONE);
             viewCache.divider.setVisibility(View.VISIBLE);
+            viewCache.accountHeaderExtraTopPadding.setVisibility(View.GONE);
         }
 
         // Bind the group data
@@ -205,6 +216,7 @@
         public final TextView groupTitle;
         public final TextView groupMemberCount;
         public final View accountHeader;
+        public final View accountHeaderExtraTopPadding;
         public final View divider;
         private Uri mUri;
 
@@ -214,6 +226,7 @@
             groupTitle = (TextView) view.findViewById(R.id.label);
             groupMemberCount = (TextView) view.findViewById(R.id.count);
             accountHeader = view.findViewById(R.id.group_list_header);
+            accountHeaderExtraTopPadding = view.findViewById(R.id.header_extra_top_padding);
             divider = view.findViewById(R.id.divider);
         }