From 7840055f76f2ba1a0052aee09e578cf9314f5364 Mon Sep 17 00:00:00 2001 From: Chet Haase Date: Thu, 3 Mar 2011 08:18:17 -0800 Subject: [PATCH] Fix problem with transparent background on Twitter app ListViews whose items don't cover their entire content area should not return true for isOpaque() Change-Id: I9165c0315a49bb5774bdcd4c1b89c1be0ebfcebf --- core/java/android/widget/ListView.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 2802144b5e06d..427126b0e68e4 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -3015,8 +3015,22 @@ public class ListView extends AbsListView { @Override public boolean isOpaque() { - return (mCachingActive && mIsCacheColorOpaque && mDividerIsOpaque && + boolean retValue = (mCachingActive && mIsCacheColorOpaque && mDividerIsOpaque && hasOpaqueScrollbars()) || super.isOpaque(); + if (retValue) { + // only return true if the list items cover the entire area of the view + final int listTop = mListPadding.top; + View first = getChildAt(0); + if (first == null || first.getTop() > listTop) { + return false; + } + final int listBottom = getHeight() - mListPadding.bottom; + View last = getChildAt(getChildCount() - 1); + if (last == null || last.getBottom() < listBottom) { + return false; + } + } + return retValue; } @Override