From 9bc3f44b3118ab801f1ab6f48d0a2b9e818017cb Mon Sep 17 00:00:00 2001 From: Hans Boehm Date: Thu, 1 Oct 2015 14:41:37 -0700 Subject: Correctly set formula text size after rotation Bug: 22233200 Avoid repeatedly resetting text size to maximum, due to repeated onMeasure calls. Suppress text size change animation when the application is restarted. Change-Id: Ic8b20deab2553176260051fa787416654bf0b3ef --- src/com/android/calculator2/CalculatorText.java | 29 +++++++++++++++---------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/com/android/calculator2/CalculatorText.java b/src/com/android/calculator2/CalculatorText.java index 109c2af..f944071 100644 --- a/src/com/android/calculator2/CalculatorText.java +++ b/src/com/android/calculator2/CalculatorText.java @@ -138,18 +138,22 @@ public class CalculatorText extends AlignedTextView implements View.OnLongClickL @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - // Prevent shrinking/resizing with our variable textSize. - if (!isLaidOut()) { - setTextSize(TypedValue.COMPLEX_UNIT_PX, mMaximumTextSize); - setMinHeight(getLineHeight() + getCompoundPaddingBottom() + getCompoundPaddingTop()); - } - // Re-calculate our textSize based on new width. final int width = MeasureSpec.getSize(widthMeasureSpec) - getPaddingLeft() - getPaddingRight(); if (mWidthConstraint != width) { mWidthConstraint = width; - setTextSize(TypedValue.COMPLEX_UNIT_PX, getVariableTextSize(getText())); + + if (!isLaidOut()) { + // Prevent shrinking/resizing with our variable textSize. + setTextSizeInternal(TypedValue.COMPLEX_UNIT_PX, mMaximumTextSize, + false /* notifyListener */); + setMinHeight(getLineHeight() + getCompoundPaddingBottom() + + getCompoundPaddingTop()); + } + + setTextSizeInternal(TypedValue.COMPLEX_UNIT_PX, getVariableTextSize(getText()), + false); } super.onMeasure(widthMeasureSpec, heightMeasureSpec); @@ -164,16 +168,19 @@ public class CalculatorText extends AlignedTextView implements View.OnLongClickL setTextSize(TypedValue.COMPLEX_UNIT_PX, getVariableTextSize(text.toString())); } - @Override - public void setTextSize(int unit, float size) { + private void setTextSizeInternal(int unit, float size, boolean notifyListener) { final float oldTextSize = getTextSize(); super.setTextSize(unit, size); - - if (mOnTextSizeChangeListener != null && getTextSize() != oldTextSize) { + if (notifyListener && mOnTextSizeChangeListener != null && getTextSize() != oldTextSize) { mOnTextSizeChangeListener.onTextSizeChanged(this, oldTextSize); } } + @Override + public void setTextSize(int unit, float size) { + setTextSizeInternal(unit, size, true); + } + public float getMinimumTextSize() { return mMinimumTextSize; } -- cgit v1.2.3