summaryrefslogtreecommitdiff
path: root/library/main/src/com/android/setupwizardlib/view/ButtonBarLayout.java
diff options
context:
space:
mode:
Diffstat (limited to 'library/main/src/com/android/setupwizardlib/view/ButtonBarLayout.java')
-rw-r--r--library/main/src/com/android/setupwizardlib/view/ButtonBarLayout.java142
1 files changed, 68 insertions, 74 deletions
diff --git a/library/main/src/com/android/setupwizardlib/view/ButtonBarLayout.java b/library/main/src/com/android/setupwizardlib/view/ButtonBarLayout.java
index f7f5f99..4be4f56 100644
--- a/library/main/src/com/android/setupwizardlib/view/ButtonBarLayout.java
+++ b/library/main/src/com/android/setupwizardlib/view/ButtonBarLayout.java
@@ -20,105 +20,99 @@ import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
-
import com.android.setupwizardlib.R;
/**
* An extension of LinearLayout that automatically switches to vertical orientation when it can't
* fit its child views horizontally.
*
- * Modified from {@code com.android.internal.widget.ButtonBarLayout}
+ * <p>Modified from {@code com.android.internal.widget.ButtonBarLayout}
*/
public class ButtonBarLayout extends LinearLayout {
- private boolean mStacked = false;
- private int mOriginalPaddingLeft;
- private int mOriginalPaddingRight;
+ private boolean stacked = false;
+ private int originalPaddingLeft;
+ private int originalPaddingRight;
- public ButtonBarLayout(Context context) {
- super(context);
- }
+ public ButtonBarLayout(Context context) {
+ super(context);
+ }
- public ButtonBarLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
+ public ButtonBarLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- final int widthSize = MeasureSpec.getSize(widthMeasureSpec);
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ final int widthSize = MeasureSpec.getSize(widthMeasureSpec);
- setStacked(false);
+ setStacked(false);
- boolean needsRemeasure = false;
+ boolean needsRemeasure = false;
- int initialWidthMeasureSpec = widthMeasureSpec;
- if (MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY) {
- // Measure with WRAP_CONTENT, so that we can compare the measured size with the
- // available size to see if we need to stack.
- initialWidthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
+ int initialWidthMeasureSpec = widthMeasureSpec;
+ if (MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY) {
+ // Measure with WRAP_CONTENT, so that we can compare the measured size with the
+ // available size to see if we need to stack.
+ initialWidthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
- // We'll need to remeasure again to fill excess space.
- needsRemeasure = true;
- }
+ // We'll need to remeasure again to fill excess space.
+ needsRemeasure = true;
+ }
- super.onMeasure(initialWidthMeasureSpec, heightMeasureSpec);
+ super.onMeasure(initialWidthMeasureSpec, heightMeasureSpec);
- if (getMeasuredWidth() > widthSize) {
- setStacked(true);
+ if (getMeasuredWidth() > widthSize) {
+ setStacked(true);
- // Measure again in the new orientation.
- needsRemeasure = true;
- }
+ // Measure again in the new orientation.
+ needsRemeasure = true;
+ }
- if (needsRemeasure) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- }
+ if (needsRemeasure) {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
+ }
- private void setStacked(boolean stacked) {
- if (mStacked == stacked) {
- return;
- }
- mStacked = stacked;
- int childCount = getChildCount();
- for (int i = 0; i < childCount; i++) {
- View child = getChildAt(i);
- LayoutParams childParams = (LayoutParams) child.getLayoutParams();
- if (stacked) {
- child.setTag(R.id.suw_original_weight, childParams.weight);
- childParams.weight = 0;
- } else {
- Float weight = (Float) child.getTag(R.id.suw_original_weight);
- if (weight != null) {
- childParams.weight = weight;
- }
- }
- child.setLayoutParams(childParams);
+ private void setStacked(boolean stacked) {
+ if (this.stacked == stacked) {
+ return;
+ }
+ this.stacked = stacked;
+ int childCount = getChildCount();
+ for (int i = 0; i < childCount; i++) {
+ View child = getChildAt(i);
+ LayoutParams childParams = (LayoutParams) child.getLayoutParams();
+ if (stacked) {
+ child.setTag(R.id.suw_original_weight, childParams.weight);
+ childParams.weight = 0;
+ } else {
+ Float weight = (Float) child.getTag(R.id.suw_original_weight);
+ if (weight != null) {
+ childParams.weight = weight;
}
+ }
+ child.setLayoutParams(childParams);
+ }
- setOrientation(stacked ? LinearLayout.VERTICAL : LinearLayout.HORIZONTAL);
+ setOrientation(stacked ? LinearLayout.VERTICAL : LinearLayout.HORIZONTAL);
- // Reverse the child order, so that the primary button is towards the top when vertical
- for (int i = childCount - 1; i >= 0; i--) {
- bringChildToFront(getChildAt(i));
- }
+ // Reverse the child order, so that the primary button is towards the top when vertical
+ for (int i = childCount - 1; i >= 0; i--) {
+ bringChildToFront(getChildAt(i));
+ }
- if (stacked) {
- // HACK: In the default button bar style, the left and right paddings are not
- // balanced to compensate for different alignment for borderless (left) button and
- // the raised (right) button. When it's stacked, we want the buttons to be centered,
- // so we balance out the paddings here.
- mOriginalPaddingLeft = getPaddingLeft();
- mOriginalPaddingRight = getPaddingRight();
- int paddingHorizontal = Math.max(mOriginalPaddingLeft, mOriginalPaddingRight);
- setPadding(
- paddingHorizontal, getPaddingTop(), paddingHorizontal, getPaddingBottom());
- } else {
- setPadding(
- mOriginalPaddingLeft,
- getPaddingTop(),
- mOriginalPaddingRight,
- getPaddingBottom());
- }
+ if (stacked) {
+ // HACK: In the default button bar style, the left and right paddings are not
+ // balanced to compensate for different alignment for borderless (left) button and
+ // the raised (right) button. When it's stacked, we want the buttons to be centered,
+ // so we balance out the paddings here.
+ originalPaddingLeft = getPaddingLeft();
+ originalPaddingRight = getPaddingRight();
+ int paddingHorizontal = Math.max(originalPaddingLeft, originalPaddingRight);
+ setPadding(paddingHorizontal, getPaddingTop(), paddingHorizontal, getPaddingBottom());
+ } else {
+ setPadding(originalPaddingLeft, getPaddingTop(), originalPaddingRight, getPaddingBottom());
}
+ }
}