diff options
| author | Alan Viverette <alanv@google.com> | 2015-06-29 19:39:27 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-29 19:39:29 +0000 |
| commit | a1b647c8833cf85e304e3c201e7d0477b9838502 (patch) | |
| tree | 93f154fef92101a633597bbaa9467e0119c3fe8c | |
| parent | 795d95ecd7ad27fdd10f66113033ad98c4f5baf7 (diff) | |
| parent | 2ea329290cb470cfd8a846c63bc333fdb4f9ff1d (diff) | |
| download | frameworks_base-a1b647c8833cf85e304e3c201e7d0477b9838502.zip frameworks_base-a1b647c8833cf85e304e3c201e7d0477b9838502.tar.gz frameworks_base-a1b647c8833cf85e304e3c201e7d0477b9838502.tar.bz2 | |
Merge "Always remeasure ListView scrap used to obtain minimum width" into mnc-dev
| -rw-r--r-- | core/java/android/widget/ListView.java | 40 | ||||
| -rw-r--r-- | core/java/com/android/internal/widget/ViewPager.java | 2 | ||||
| -rw-r--r-- | core/res/res/layout/date_picker_view_animator_material.xml | 3 | ||||
| -rw-r--r-- | core/res/res/layout/year_label_text_view.xml | 2 |
4 files changed, 27 insertions, 20 deletions
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index fd0395a..9568492 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -1143,8 +1143,8 @@ public class ListView extends AbsListView { // Sets up mListPadding super.onMeasure(widthMeasureSpec, heightMeasureSpec); - int widthMode = MeasureSpec.getMode(widthMeasureSpec); - int heightMode = MeasureSpec.getMode(heightMeasureSpec); + final int widthMode = MeasureSpec.getMode(widthMeasureSpec); + final int heightMode = MeasureSpec.getMode(heightMeasureSpec); int widthSize = MeasureSpec.getSize(widthMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); @@ -1153,10 +1153,12 @@ public class ListView extends AbsListView { int childState = 0; mItemCount = mAdapter == null ? 0 : mAdapter.getCount(); - if (mItemCount > 0 && (widthMode == MeasureSpec.UNSPECIFIED || - heightMode == MeasureSpec.UNSPECIFIED)) { + if (mItemCount > 0 && (widthMode == MeasureSpec.UNSPECIFIED + || heightMode == MeasureSpec.UNSPECIFIED)) { final View child = obtainView(0, mIsScrap); + // Lay out child directly against the parent measure spec so that + // we can obtain exected minimum width and height. measureScrapChild(child, 0, widthMeasureSpec, heightSize); childWidth = child.getMeasuredWidth(); @@ -1173,7 +1175,7 @@ public class ListView extends AbsListView { widthSize = mListPadding.left + mListPadding.right + childWidth + getVerticalScrollbarWidth(); } else { - widthSize |= (childState&MEASURED_STATE_MASK); + widthSize |= (childState & MEASURED_STATE_MASK); } if (heightMode == MeasureSpec.UNSPECIFIED) { @@ -1186,8 +1188,9 @@ public class ListView extends AbsListView { heightSize = measureHeightOfChildren(widthMeasureSpec, 0, NO_POSITION, heightSize, -1); } - setMeasuredDimension(widthSize , heightSize); - mWidthMeasureSpec = widthMeasureSpec; + setMeasuredDimension(widthSize, heightSize); + + mWidthMeasureSpec = widthMeasureSpec; } private void measureScrapChild(View child, int position, int widthMeasureSpec, int heightHint) { @@ -1199,16 +1202,20 @@ public class ListView extends AbsListView { p.viewType = mAdapter.getItemViewType(position); p.forceAdd = true; - int childWidthSpec = ViewGroup.getChildMeasureSpec(widthMeasureSpec, + final int childWidthSpec = ViewGroup.getChildMeasureSpec(widthMeasureSpec, mListPadding.left + mListPadding.right, p.width); - int lpHeight = p.height; - int childHeightSpec; + final int lpHeight = p.height; + final int childHeightSpec; if (lpHeight > 0) { childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY); } else { childHeightSpec = MeasureSpec.makeSafeMeasureSpec(heightHint, MeasureSpec.UNSPECIFIED); } child.measure(childWidthSpec, childHeightSpec); + + // Since this view was measured directly aginst the parent measure + // spec, we must measure it again before reuse. + child.forceLayout(); } /** @@ -1248,8 +1255,7 @@ public class ListView extends AbsListView { * @return The height of this ListView with the given children. */ final int measureHeightOfChildren(int widthMeasureSpec, int startPosition, int endPosition, - final int maxHeight, int disallowPartialChildPosition) { - + int maxHeight, int disallowPartialChildPosition) { final ListAdapter adapter = mAdapter; if (adapter == null) { return mListPadding.top + mListPadding.bottom; @@ -1907,8 +1913,8 @@ public class ListView extends AbsListView { } p.viewType = mAdapter.getItemViewType(position); - if ((recycled && !p.forceAdd) || (p.recycledHeaderFooter && - p.viewType == AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER)) { + if ((recycled && !p.forceAdd) || (p.recycledHeaderFooter + && p.viewType == AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER)) { attachViewToParent(child, flowDown ? -1 : 0, p); } else { p.forceAdd = false; @@ -1936,10 +1942,10 @@ public class ListView extends AbsListView { } if (needToMeasure) { - int childWidthSpec = ViewGroup.getChildMeasureSpec(mWidthMeasureSpec, + final int childWidthSpec = ViewGroup.getChildMeasureSpec(mWidthMeasureSpec, mListPadding.left + mListPadding.right, p.width); - int lpHeight = p.height; - int childHeightSpec; + final int lpHeight = p.height; + final int childHeightSpec; if (lpHeight > 0) { childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY); } else { diff --git a/core/java/com/android/internal/widget/ViewPager.java b/core/java/com/android/internal/widget/ViewPager.java index e76302b..a2c4f6a 100644 --- a/core/java/com/android/internal/widget/ViewPager.java +++ b/core/java/com/android/internal/widget/ViewPager.java @@ -85,7 +85,7 @@ import java.util.Comparator; */ public class ViewPager extends ViewGroup { private static final String TAG = "ViewPager"; - private static final boolean DEBUG = true; + private static final boolean DEBUG = false; private static final int MAX_SCROLL_X = 2 << 23; private static final boolean USE_CACHE = false; diff --git a/core/res/res/layout/date_picker_view_animator_material.xml b/core/res/res/layout/date_picker_view_animator_material.xml index e863b28..04647b1 100644 --- a/core/res/res/layout/date_picker_view_animator_material.xml +++ b/core/res/res/layout/date_picker_view_animator_material.xml @@ -32,6 +32,7 @@ <android.widget.YearPickerView android:id="@+id/date_picker_year_picker" android:layout_width="match_parent" - android:layout_height="match_parent" /> + android:layout_height="match_parent" + android:scrollIndicators="bottom" /> </com.android.internal.widget.DialogViewAnimator> diff --git a/core/res/res/layout/year_label_text_view.xml b/core/res/res/layout/year_label_text_view.xml index 6240c4b..3ea719d 100644 --- a/core/res/res/layout/year_label_text_view.xml +++ b/core/res/res/layout/year_label_text_view.xml @@ -14,7 +14,7 @@ limitations under the License. --> <TextView xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/month_text_view" + android:id="@id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/listPreferredItemHeightSmall" |
