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();
}