From d8a3b731676f7fe0010d87074ebb31b6dd96381e Mon Sep 17 00:00:00 2001 From: hkurokawa Date: Tue, 20 Dec 2016 17:42:31 +0900 Subject: [PATCH] Add baseline alignment support to TextInputLayout. --- .../design/widget/TextInputLayout.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/src/android/support/design/widget/TextInputLayout.java b/lib/src/android/support/design/widget/TextInputLayout.java index 5b01a751fea..9338ada5424 100644 --- a/lib/src/android/support/design/widget/TextInputLayout.java +++ b/lib/src/android/support/design/widget/TextInputLayout.java @@ -190,9 +190,10 @@ public TextInputLayout(Context context, AttributeSet attrs, int defStyleAttr) { setWillNotDraw(false); setAddStatesFromChildren(true); - mInputFrame = new FrameLayout(context); + mInputFrame = new BaselineAlignableFrameLayout(context); mInputFrame.setAddStatesFromChildren(true); addView(mInputFrame); + setBaselineAlignedChildIndex(0); mCollapsingTextHelper.setTextSizeInterpolator(AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR); mCollapsingTextHelper.setPositionInterpolator(new AccelerateInterpolator()); @@ -1470,4 +1471,27 @@ private static boolean arrayContains(int[] array, int value) { } return false; } + + private static class BaselineAlignableFrameLayout extends FrameLayout { + + public BaselineAlignableFrameLayout(Context context) { + super(context); + } + + public BaselineAlignableFrameLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public BaselineAlignableFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + public int getBaseline() { + if (this.getChildCount() > 0) { + return this.getChildAt(0).getBaseline(); + } + return super.getBaseline(); + } + } }