am a1b647c8: Merge "Always remeasure ListView scrap used to obtain minimum width" into mnc-dev
* commit 'a1b647c8833cf85e304e3c201e7d0477b9838502': Always remeasure ListView scrap used to obtain minimum width
This commit is contained in:
@@ -1143,8 +1143,8 @@ public class ListView extends AbsListView {
|
|||||||
// Sets up mListPadding
|
// Sets up mListPadding
|
||||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||||
|
|
||||||
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
|
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
|
||||||
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
|
final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
|
||||||
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
|
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
|
||||||
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
|
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
|
||||||
|
|
||||||
@@ -1153,10 +1153,12 @@ public class ListView extends AbsListView {
|
|||||||
int childState = 0;
|
int childState = 0;
|
||||||
|
|
||||||
mItemCount = mAdapter == null ? 0 : mAdapter.getCount();
|
mItemCount = mAdapter == null ? 0 : mAdapter.getCount();
|
||||||
if (mItemCount > 0 && (widthMode == MeasureSpec.UNSPECIFIED ||
|
if (mItemCount > 0 && (widthMode == MeasureSpec.UNSPECIFIED
|
||||||
heightMode == MeasureSpec.UNSPECIFIED)) {
|
|| heightMode == MeasureSpec.UNSPECIFIED)) {
|
||||||
final View child = obtainView(0, mIsScrap);
|
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);
|
measureScrapChild(child, 0, widthMeasureSpec, heightSize);
|
||||||
|
|
||||||
childWidth = child.getMeasuredWidth();
|
childWidth = child.getMeasuredWidth();
|
||||||
@@ -1173,7 +1175,7 @@ public class ListView extends AbsListView {
|
|||||||
widthSize = mListPadding.left + mListPadding.right + childWidth +
|
widthSize = mListPadding.left + mListPadding.right + childWidth +
|
||||||
getVerticalScrollbarWidth();
|
getVerticalScrollbarWidth();
|
||||||
} else {
|
} else {
|
||||||
widthSize |= (childState&MEASURED_STATE_MASK);
|
widthSize |= (childState & MEASURED_STATE_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (heightMode == MeasureSpec.UNSPECIFIED) {
|
if (heightMode == MeasureSpec.UNSPECIFIED) {
|
||||||
@@ -1186,7 +1188,8 @@ public class ListView extends AbsListView {
|
|||||||
heightSize = measureHeightOfChildren(widthMeasureSpec, 0, NO_POSITION, heightSize, -1);
|
heightSize = measureHeightOfChildren(widthMeasureSpec, 0, NO_POSITION, heightSize, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
setMeasuredDimension(widthSize , heightSize);
|
setMeasuredDimension(widthSize, heightSize);
|
||||||
|
|
||||||
mWidthMeasureSpec = widthMeasureSpec;
|
mWidthMeasureSpec = widthMeasureSpec;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1199,16 +1202,20 @@ public class ListView extends AbsListView {
|
|||||||
p.viewType = mAdapter.getItemViewType(position);
|
p.viewType = mAdapter.getItemViewType(position);
|
||||||
p.forceAdd = true;
|
p.forceAdd = true;
|
||||||
|
|
||||||
int childWidthSpec = ViewGroup.getChildMeasureSpec(widthMeasureSpec,
|
final int childWidthSpec = ViewGroup.getChildMeasureSpec(widthMeasureSpec,
|
||||||
mListPadding.left + mListPadding.right, p.width);
|
mListPadding.left + mListPadding.right, p.width);
|
||||||
int lpHeight = p.height;
|
final int lpHeight = p.height;
|
||||||
int childHeightSpec;
|
final int childHeightSpec;
|
||||||
if (lpHeight > 0) {
|
if (lpHeight > 0) {
|
||||||
childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY);
|
childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY);
|
||||||
} else {
|
} else {
|
||||||
childHeightSpec = MeasureSpec.makeSafeMeasureSpec(heightHint, MeasureSpec.UNSPECIFIED);
|
childHeightSpec = MeasureSpec.makeSafeMeasureSpec(heightHint, MeasureSpec.UNSPECIFIED);
|
||||||
}
|
}
|
||||||
child.measure(childWidthSpec, childHeightSpec);
|
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.
|
* @return The height of this ListView with the given children.
|
||||||
*/
|
*/
|
||||||
final int measureHeightOfChildren(int widthMeasureSpec, int startPosition, int endPosition,
|
final int measureHeightOfChildren(int widthMeasureSpec, int startPosition, int endPosition,
|
||||||
final int maxHeight, int disallowPartialChildPosition) {
|
int maxHeight, int disallowPartialChildPosition) {
|
||||||
|
|
||||||
final ListAdapter adapter = mAdapter;
|
final ListAdapter adapter = mAdapter;
|
||||||
if (adapter == null) {
|
if (adapter == null) {
|
||||||
return mListPadding.top + mListPadding.bottom;
|
return mListPadding.top + mListPadding.bottom;
|
||||||
@@ -1907,8 +1913,8 @@ public class ListView extends AbsListView {
|
|||||||
}
|
}
|
||||||
p.viewType = mAdapter.getItemViewType(position);
|
p.viewType = mAdapter.getItemViewType(position);
|
||||||
|
|
||||||
if ((recycled && !p.forceAdd) || (p.recycledHeaderFooter &&
|
if ((recycled && !p.forceAdd) || (p.recycledHeaderFooter
|
||||||
p.viewType == AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER)) {
|
&& p.viewType == AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER)) {
|
||||||
attachViewToParent(child, flowDown ? -1 : 0, p);
|
attachViewToParent(child, flowDown ? -1 : 0, p);
|
||||||
} else {
|
} else {
|
||||||
p.forceAdd = false;
|
p.forceAdd = false;
|
||||||
@@ -1936,10 +1942,10 @@ public class ListView extends AbsListView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (needToMeasure) {
|
if (needToMeasure) {
|
||||||
int childWidthSpec = ViewGroup.getChildMeasureSpec(mWidthMeasureSpec,
|
final int childWidthSpec = ViewGroup.getChildMeasureSpec(mWidthMeasureSpec,
|
||||||
mListPadding.left + mListPadding.right, p.width);
|
mListPadding.left + mListPadding.right, p.width);
|
||||||
int lpHeight = p.height;
|
final int lpHeight = p.height;
|
||||||
int childHeightSpec;
|
final int childHeightSpec;
|
||||||
if (lpHeight > 0) {
|
if (lpHeight > 0) {
|
||||||
childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY);
|
childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ import java.util.Comparator;
|
|||||||
*/
|
*/
|
||||||
public class ViewPager extends ViewGroup {
|
public class ViewPager extends ViewGroup {
|
||||||
private static final String TAG = "ViewPager";
|
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 int MAX_SCROLL_X = 2 << 23;
|
||||||
private static final boolean USE_CACHE = false;
|
private static final boolean USE_CACHE = false;
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
<android.widget.YearPickerView
|
<android.widget.YearPickerView
|
||||||
android:id="@+id/date_picker_year_picker"
|
android:id="@+id/date_picker_year_picker"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent"
|
||||||
|
android:scrollIndicators="bottom" />
|
||||||
|
|
||||||
</com.android.internal.widget.DialogViewAnimator>
|
</com.android.internal.widget.DialogViewAnimator>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
<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_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:minHeight="?attr/listPreferredItemHeightSmall"
|
android:minHeight="?attr/listPreferredItemHeightSmall"
|
||||||
|
|||||||
Reference in New Issue
Block a user