diff --git a/src/com/android/contacts/BaseContactCardActivity.java b/src/com/android/contacts/BaseContactCardActivity.java
index f123c89..2aac1a2 100644
--- a/src/com/android/contacts/BaseContactCardActivity.java
+++ b/src/com/android/contacts/BaseContactCardActivity.java
@@ -205,7 +205,7 @@
             // TODO: ensure inflation on background task so we don't block UI thread here
             final ContactsSource source = sources.getInflatedSource(accountType,
                     ContactsSource.LEVEL_SUMMARY);
-            addTab(rawContactId, createTabIndicatorView(mTabWidget, source));
+            addTab(rawContactId, createTabIndicatorView(mTabWidget.getTabParent(), source));
         }
 
         selectInitialTab();
@@ -213,18 +213,6 @@
         mTabWidget.postInvalidate();
     }
 
-
-    /**
-     * Add a tab to be displayed in the {@link ScrollingTabWidget}.
-     *
-     * @param contactId The contact id associated with the tab.
-     * @param label A label to display in the tab indicator.
-     * @param icon An icon to display in the tab indicator.
-     */
-    protected void addTab(long contactId, String label, Drawable icon) {
-        addTab(contactId, createTabIndicatorView(mTabWidget, label, icon));
-    }
-
     /**
      * Add a tab to be displayed in the {@link ScrollingTabWidget}.
      *
diff --git a/src/com/android/contacts/ScrollingTabWidget.java b/src/com/android/contacts/ScrollingTabWidget.java
index ddd101b..466071a 100644
--- a/src/com/android/contacts/ScrollingTabWidget.java
+++ b/src/com/android/contacts/ScrollingTabWidget.java
@@ -152,6 +152,14 @@
         return mTabsView.getChildCount();
     }
 
+    /**
+     * Returns the {@link ViewGroup} that actually contains the tabs. This is where the tab
+     * views should be attached to when being inflated.
+     */
+    public ViewGroup getTabParent() {
+        return mTabsView;
+    }
+
     public void removeAllTabs() {
         mTabsView.removeAllViews();
     }
diff --git a/src/com/android/contacts/TabStripView.java b/src/com/android/contacts/TabStripView.java
index 70878ea..ae80be0 100644
--- a/src/com/android/contacts/TabStripView.java
+++ b/src/com/android/contacts/TabStripView.java
@@ -25,6 +25,7 @@
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewParent;
 import android.widget.HorizontalScrollView;
 import android.widget.LinearLayout;
 
@@ -57,6 +58,16 @@
     }
 
     @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        ViewParent parent = getParent();
+        if (parent instanceof HorizontalScrollView) {
+            setMinimumWidth(((HorizontalScrollView) getParent()).getMeasuredWidth());
+        }
+
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+    }
+
+    @Override
     public void childDrawableStateChanged(View child) {
         if (child == getChildAt(mSelectedTabIndex)) {
             // To make sure that the bottom strip is redrawn
diff --git a/src/com/android/contacts/ViewContactActivity.java b/src/com/android/contacts/ViewContactActivity.java
index da49188..cd9802c 100644
--- a/src/com/android/contacts/ViewContactActivity.java
+++ b/src/com/android/contacts/ViewContactActivity.java
@@ -265,7 +265,8 @@
     }
 
     private void addAllTab() {
-        View allTabIndicator = mInflater.inflate(R.layout.all_tab_indicator, mTabWidget, false);
+        View allTabIndicator = mInflater.inflate(R.layout.all_tab_indicator,
+                mTabWidget.getTabParent(), false);
         allTabIndicator.getBackground().setDither(true);
         addTab(ALL_CONTACTS_ID, allTabIndicator);
     }
diff --git a/src/com/android/contacts/ui/EditContactActivity.java b/src/com/android/contacts/ui/EditContactActivity.java
index 03ef79a..0946e39 100644
--- a/src/com/android/contacts/ui/EditContactActivity.java
+++ b/src/com/android/contacts/ui/EditContactActivity.java
@@ -335,7 +335,8 @@
                 selectedTab = mTabWidget.getTabCount();
             }
 
-            final View tabView = BaseContactCardActivity.createTabIndicatorView(mTabWidget, source);
+            final View tabView = BaseContactCardActivity.createTabIndicatorView(
+                    mTabWidget.getTabParent(), source);
             mTabWidget.addTab(tabView);
         }
         if (mState.size() > 0) {
