Merge "Fix incorrect width of right most action button in notification" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
68f36d6b5d
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user