From db024f09c5d1a7bfebb65933e76b5f40e1f2a280 Mon Sep 17 00:00:00 2001 From: Chris Banes Date: Wed, 30 Nov 2016 01:20:02 +0000 Subject: [PATCH] am 54933dc7: am 871f7ae0: am 5a27940c: am 1cb0698d: Merge "Improvements to TextInputLayout" into lmp-mr1-ub-dev * commit '54933dc742b11f6c2623ea12369719195e6c1bdb': Improvements to TextInputLayout GitOrigin-RevId=2b5f7a8388a2c2de80b33fefd67fae98457efb64 PiperOrigin-RevId: 140548846 --- .../design/widget/CollapsingTextHelper.java | 10 ++------ .../widget/CollapsingToolbarLayout.java | 5 ++-- .../design/widget/TextInputLayout.java | 23 ++++++++++++++++--- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/android/support/design/widget/CollapsingTextHelper.java b/src/android/support/design/widget/CollapsingTextHelper.java index d82d038c9..636770ef9 100644 --- a/src/android/support/design/widget/CollapsingTextHelper.java +++ b/src/android/support/design/widget/CollapsingTextHelper.java @@ -137,12 +137,10 @@ final class CollapsingTextHelper { void setExpandedBounds(int left, int top, int right, int bottom) { mExpandedBounds.set(left, top, right, bottom); - recalculate(); } void setCollapsedBounds(int left, int top, int right, int bottom) { mCollapsedBounds.set(left, top, right, bottom); - recalculate(); } void setExpandedTextVerticalGravity(int gravity) { @@ -440,8 +438,8 @@ final class CollapsingTextHelper { } } - private void recalculate() { - if (ViewCompat.isLaidOut(mView)) { + public void recalculate() { + if (mView.getHeight() > 0 && mView.getWidth() > 0) { // If we've already been laid out, calculate everything now otherwise we'll wait // until a layout calculateBaselines(); @@ -474,10 +472,6 @@ final class CollapsingTextHelper { } } - public void onLayout(boolean changed, int left, int top, int right, int bottom) { - recalculate(); - } - /** * Returns true if {@code value} is 'close' to it's closest decimal value. Close is currently * defined as it's difference being < 0.001. diff --git a/src/android/support/design/widget/CollapsingToolbarLayout.java b/src/android/support/design/widget/CollapsingToolbarLayout.java index 474a0a866..b2b55f7e9 100644 --- a/src/android/support/design/widget/CollapsingToolbarLayout.java +++ b/src/android/support/design/widget/CollapsingToolbarLayout.java @@ -332,9 +332,6 @@ public class CollapsingToolbarLayout extends FrameLayout { getViewOffsetHelper(child).onViewLayout(); } - // Now let the collapsing text helper update itself - mCollapsingTextHelper.onLayout(changed, left, top, right, bottom); - ensureToolbar(); // Update the collapsed bounds by getting it's transformed bounds @@ -346,6 +343,8 @@ public class CollapsingToolbarLayout extends FrameLayout { mCollapsingTextHelper.setExpandedBounds(left + mExpandedMarginLeft, mTmpRect.bottom + mExpandedMarginTop, right - mExpandedMarginRight, bottom - mExpandedMarginBottom); + + mCollapsingTextHelper.recalculate(); } // Finally, set our minimum height to enable proper AppBarLayout collapsing diff --git a/src/android/support/design/widget/TextInputLayout.java b/src/android/support/design/widget/TextInputLayout.java index 392da5f77..884e538f7 100644 --- a/src/android/support/design/widget/TextInputLayout.java +++ b/src/android/support/design/widget/TextInputLayout.java @@ -50,6 +50,24 @@ import android.widget.TextView; * * Also supports showing an error via {@link #setErrorEnabled(boolean)} and * {@link #setError(CharSequence)}. + * + *

Please note: this class sets a {@link android.view.View.OnFocusChangeListener} on the wrapped + * {@link EditText}. If you need to set your own listener, then you should wrap the existing one + * and forward the call like so: + *

+ * TextInputLayout inputLayout = ...;
+ * EditText editText = inputLayout.getEditText();
+ * final OnFocusChangeListener existing = editText.getOnFocusChangeListener();
+ *
+ * editText.setOnFocusChangeListener(new OnFocusChangeListener() {
+ *     public void onFocusChange(View view, boolean focused) {
+ *         existing.onFocusChange(view, focused);
+ *
+ *         // Your custom logic
+ *     }
+ * });
+ * 
+ *

*/ public class TextInputLayout extends LinearLayout { @@ -335,8 +353,6 @@ public class TextInputLayout extends LinearLayout { protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); - mCollapsingTextHelper.onLayout(changed, left, top, right, bottom); - if (mEditText != null) { final int l = mEditText.getLeft() + mEditText.getCompoundPaddingLeft(); final int r = mEditText.getRight() - mEditText.getCompoundPaddingRight(); @@ -349,6 +365,8 @@ public class TextInputLayout extends LinearLayout { // EditText's editable area mCollapsingTextHelper.setCollapsedBounds(l, getPaddingTop(), r, bottom - top - getPaddingBottom()); + + mCollapsingTextHelper.recalculate(); } } @@ -382,7 +400,6 @@ public class TextInputLayout extends LinearLayout { } else if (mAnimator.isRunning()) { mAnimator.cancel(); } - mAnimator.setFloatValues(mCollapsingTextHelper.getExpansionFraction(), target); mAnimator.start(); }