From fb81703ab11c653a587b652b90ec3b550f500ccf Mon Sep 17 00:00:00 2001 From: Gilles Debunne Date: Thu, 13 Jan 2011 13:52:49 -0800 Subject: fix for cts DuplicateParentStateEnabled bug with TextViews. Bug 3347206 Do not add an extra slot in the drawable state for multiline if it is not needed. Updated setDuplicateParentStateEnabled documentation. Change-Id: I95f74284721e25b483e12e9b861e810a55c260b6 --- core/java/android/view/View.java | 4 ++++ core/java/android/widget/TextView.java | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'core/java/android') diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 45c35f0..c319ad1 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -58,6 +58,7 @@ import android.util.PoolableManager; import android.util.Pools; import android.util.SparseArray; import android.view.ContextMenu.ContextMenuInfo; +import android.view.View.MeasureSpec; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityEventSource; import android.view.accessibility.AccessibilityManager; @@ -7822,6 +7823,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility * *

Note: if this view's parent addStateFromChildren property is enabled and this * property is enabled, an exception will be thrown.

+ * + *

Note: if the child view uses and updates additionnal states which are unknown to the + * parent, these states should not be affected by this method.

* * @param enabled True to enable duplication of the parent's drawable state, false * to disable it. diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index b892fe2..623cd41 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -4135,9 +4135,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener @Override protected int[] onCreateDrawableState(int extraSpace) { - final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); + final int[] drawableState; - if (!mSingleLine) { + if (mSingleLine) { + drawableState = super.onCreateDrawableState(extraSpace); + } else { + drawableState = super.onCreateDrawableState(extraSpace + 1); mergeDrawableStates(drawableState, MULTILINE_STATE_SET); } -- cgit v1.1