From 97dfd3492f81525fb3560a74abaee9f965f138a9 Mon Sep 17 00:00:00 2001 From: Gilles Debunne Date: Wed, 20 Oct 2010 16:31:15 -0700 Subject: [PATCH] Fix to display first tab as selected on tab widget creation. Change-Id: Icc6ec78d2392a300b43b522b3dc18d0ab1223116 --- core/java/android/widget/TabWidget.java | 31 ++++++++++++++++--------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/core/java/android/widget/TabWidget.java b/core/java/android/widget/TabWidget.java index 594b1e695581a..0469e7bf72276 100644 --- a/core/java/android/widget/TabWidget.java +++ b/core/java/android/widget/TabWidget.java @@ -26,8 +26,8 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.util.AttributeSet; import android.view.View; -import android.view.ViewGroup; import android.view.View.OnFocusChangeListener; +import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; /** @@ -53,7 +53,8 @@ import android.view.accessibility.AccessibilityEvent; public class TabWidget extends LinearLayout implements OnFocusChangeListener { private OnTabSelectionChanged mSelectionChangedListener; - private int mSelectedTab = 0; + // This value will be set to 0 as soon as the first tab is added to TabHost. + private int mSelectedTab = -1; private Drawable mLeftStrip; private Drawable mRightStrip; @@ -98,14 +99,18 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener { @Override protected int getChildDrawingOrder(int childCount, int i) { - // Always draw the selected tab last, so that drop shadows are drawn - // in the correct z-order. - if (i == childCount - 1) { - return mSelectedTab; - } else if (i >= mSelectedTab) { - return i + 1; - } else { + if (mSelectedTab == -1) { return i; + } else { + // Always draw the selected tab last, so that drop shadows are drawn + // in the correct z-order. + if (i == childCount - 1) { + return mSelectedTab; + } else if (i >= mSelectedTab) { + return i + 1; + } else { + return i; + } } } @@ -340,7 +345,9 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener { return; } - getChildTabViewAt(mSelectedTab).setSelected(false); + if (mSelectedTab != -1) { + getChildTabViewAt(mSelectedTab).setSelected(false); + } mSelectedTab = index; getChildTabViewAt(mSelectedTab).setSelected(true); mStripMoved = true; @@ -354,7 +361,9 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener { public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { event.setItemCount(getTabCount()); event.setCurrentItemIndex(mSelectedTab); - getChildTabViewAt(mSelectedTab).dispatchPopulateAccessibilityEvent(event); + if (mSelectedTab != -1) { + getChildTabViewAt(mSelectedTab).dispatchPopulateAccessibilityEvent(event); + } return true; }