diff options
| author | Adam Powell <adamp@google.com> | 2012-02-27 15:23:50 -0800 |
|---|---|---|
| committer | Adam Powell <adamp@google.com> | 2012-02-27 16:30:19 -0800 |
| commit | 035a1fcd5ea3ac0080bb74101cf2793ccb9aa689 (patch) | |
| tree | 8a2207b7d1eb386b81118473b2f2f31c655779e3 /core/java/android/view/ViewGroup.java | |
| parent | 41c31ef3fa1acf18f5fce3fcf1b2f5c6fd344fd6 (diff) | |
| download | frameworks_base-035a1fcd5ea3ac0080bb74101cf2793ccb9aa689.zip frameworks_base-035a1fcd5ea3ac0080bb74101cf2793ccb9aa689.tar.gz frameworks_base-035a1fcd5ea3ac0080bb74101cf2793ccb9aa689.tar.bz2 | |
View pressed state dispatching tweaks
Bugs 6075823, 6050563
Revise pressed state dispatch logic:
Only propagate pressed state to non-clickable views. This should
eliminate the "double glow" problem in some list items where a
clickable child button has a secondary glow along with a clickable
parent. This only applies to setPressed(true) calls; setPressed(false)
must propagate. Don't early-out in setPressed to support this use
case.
Change-Id: Ibbe2309f5030282fad8d23e4a9bc4616b3f5dc7c
Diffstat (limited to 'core/java/android/view/ViewGroup.java')
| -rw-r--r-- | core/java/android/view/ViewGroup.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 2848e88..05c2b57 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -2770,7 +2770,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final View[] children = mChildren; final int count = mChildrenCount; for (int i = 0; i < count; i++) { - children[i].setPressed(pressed); + final View child = children[i]; + // Children that are clickable on their own should not + // show a pressed state when their parent view does. + // Clearing a pressed state always propagates. + if (!pressed || (!child.isClickable() && !child.isLongClickable())) { + child.setPressed(pressed); + } } } |
