Merge "Fix incorrect width of right most action button in notification" into pi-dev

This commit is contained in:
android-build-team Robot
2018-04-30 15:42:41 +00:00
committed by Android (Google) Code Review

View File

@@ -77,7 +77,6 @@ public class NotificationActionListLayout extends LinearLayout {
int otherViews = 0;
int notGoneChildren = 0;
View lastNotGoneChild = null;
for (int i = 0; i < N; i++) {
View c = getChildAt(i);
if (c instanceof TextView) {
@@ -87,7 +86,6 @@ public class NotificationActionListLayout extends LinearLayout {
}
if (c.getVisibility() != GONE) {
notGoneChildren++;
lastNotGoneChild = c;
}
}
@@ -107,11 +105,8 @@ public class NotificationActionListLayout extends LinearLayout {
}
}
}
boolean centerAligned = (mGravity & Gravity.CENTER_HORIZONTAL) != 0;
boolean singleChildCentered = notGoneChildren == 1 && centerAligned;
boolean needsRegularMeasurement = notGoneChildren > 1 || singleChildCentered;
if (needsRegularMeasurement && needRebuild) {
if (needRebuild) {
rebuildMeasureOrder(textViews, otherViews);
}
@@ -123,7 +118,7 @@ public class NotificationActionListLayout extends LinearLayout {
int usedWidth = 0;
int measuredChildren = 0;
for (int i = 0; i < N && needsRegularMeasurement; i++) {
for (int i = 0; i < N; i++) {
// Measure shortest children first. To avoid measuring twice, we approximate by looking
// at the text length.
View c;
@@ -156,25 +151,6 @@ public class NotificationActionListLayout extends LinearLayout {
measuredChildren++;
}
// Make sure to measure the last child full-width if we didn't use up the entire width,
// or we didn't measure yet because there's just one child.
if (lastNotGoneChild != null && !centerAligned && (constrained && usedWidth < innerWidth
|| notGoneChildren == 1)) {
MarginLayoutParams lp = (MarginLayoutParams) lastNotGoneChild.getLayoutParams();
if (notGoneChildren > 1) {
// Need to make room, since we already measured this once.
usedWidth -= lastNotGoneChild.getMeasuredWidth() + lp.rightMargin + lp.leftMargin;
}
int originalWidth = lp.width;
lp.width = LayoutParams.MATCH_PARENT;
measureChildWithMargins(lastNotGoneChild, widthMeasureSpec, usedWidth,
heightMeasureSpec, 0 /* usedHeight */);
lp.width = originalWidth;
usedWidth += lastNotGoneChild.getMeasuredWidth() + lp.rightMargin + lp.leftMargin;
}
mTotalWidth = usedWidth + mPaddingRight + mPaddingLeft;
setMeasuredDimension(resolveSize(getSuggestedMinimumWidth(), widthMeasureSpec),
resolveSize(getSuggestedMinimumHeight(), heightMeasureSpec));