Android - 减少 EditText 浮动标签 padding/margin?

Android - reduce EditText floating label padding/margin?

是否可以将那些浮动标签 (Email/Password) 放在框内。基本上减少提示和实际输入之间的 space。

我尝试填充 Top/Bottom。 editText 的边距 Top/Bottom。但是 none 给出了我正在寻找的结果。


 <android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:id="@+id/emailWrapper"
    app:hintTextAppearance="@style/floatingLabel">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="54dp"
        android:paddingLeft="17dp"
        android:paddingRight="17dp"
        android:id="@+id/txtEmail"
        android:singleLine="true"
        android:inputType="textEmailAddress"
        android:hint="@string/emailPlaceholder"
        android:background="@drawable/btn_empty_stroke" />

</android.support.design.widget.TextInputLayout>

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:hintTextAppearance="@style/floatingLabel"
    android:id="@+id/passwordWrapper"
    android:layout_below="@+id/emailWrapper">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="54dp"
        android:paddingLeft="17dp"
        android:paddingRight="17dp"
        android:singleLine="true"
        android:inputType="textPassword"
        android:id="@+id/txtPassword"
        android:paddingTop="0dp"
        android:text="HELLO"
        android:hint="@string/passwordPlaceholder"
        android:background="@drawable/btn_empty_stroke" />

</android.support.design.widget.TextInputLayout>

感谢@Frank N.Stein 的评论和降低高度的想法。它成功了。

回答我自己的问题。因为其他人可能会提出这个问题。

所以基本上我必须为 TextInputLayout 提供准确的高度并保持 EditText 的高度相同。同时将 paddingTop 赋予 TextInputLayout 和 clipToPadding false。所以最终的文本框 xml 就这样出来了。

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_marginTop="20dp"
    android:layout_height="54dp"
    android:gravity="bottom"
    android:paddingTop="4dp"
    android:clipToPadding="false"  // above 3 lines are important
    android:id="@+id/emailWrapper"
    app:hintTextAppearance="@style/floatingLabel">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="54dp"
        android:paddingLeft="17dp"
        android:paddingRight="17dp"
        android:id="@+id/txtEmail"
        android:singleLine="true"
        android:inputType="textEmailAddress"
        android:hint="@string/emailPlaceholder"
        android:text="a@a.com"
        android:background="@drawable/btn_empty_stroke" />

</android.support.design.widget.TextInputLayout>

只需添加到您的 EditText 自定义背景:

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:shape="rectangle">
                <padding android:bottom="4dp"/> // your padding value
            </shape>
        </item>
    <!-- customize your background items if you need -->
    </layer-list>

    <android.support.design.widget.TextInputLayout
     ...>
        <android.support.design.widget.TextInputEditText
            ...
            android:background="@style/your_custom_background"/>

然后将其应用到您的 EditText,如果您使用固定高度,则使用填充值增加 EditText 的高度。