diff options
author | Hans Boehm <hboehm@google.com> | 2015-10-01 14:41:37 -0700 |
---|---|---|
committer | Hans Boehm <hboehm@google.com> | 2015-10-13 00:14:45 +0000 |
commit | 9bc3f44b3118ab801f1ab6f48d0a2b9e818017cb (patch) | |
tree | 45bc3b45f1246cd864be409790169dc937e591fa | |
parent | 26dfa3dd39607d075c53ed6798ad9ffae443846f (diff) | |
download | android_packages_apps_ExactCalculator-9bc3f44b3118ab801f1ab6f48d0a2b9e818017cb.tar.gz android_packages_apps_ExactCalculator-9bc3f44b3118ab801f1ab6f48d0a2b9e818017cb.tar.bz2 android_packages_apps_ExactCalculator-9bc3f44b3118ab801f1ab6f48d0a2b9e818017cb.zip |
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
-rw-r--r-- | src/com/android/calculator2/CalculatorText.java | 29 |
1 files 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; } |