Android:TextInputLayout 总是从顶部留出一些空间

Mar*_* M. 3 android android-layout

我有这个布局:

<LinearLayout
    android:id="@+id/dialogCentralContent"
    android:gravity="center_horizontal"
    android:layout_width="220dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/phoneNumberInfo"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginBottom="20dp"
    android:layout_centerHorizontal="true"
    android:orientation="horizontal"
    android:background="@drawable/edittext_white_rounded">

    <EditText
        android:layout_width="0dp"
        android:layout_height="60dp"
        android:layout_weight="1"
        android:gravity="center"
        android:maxLines="1"
        android:inputType="none"
        android:focusable="false"
        android:text="@={dataContext.phonePrefix}"
        style="@style/Widget.App.PurchaseAmountEditText" />

    <android.support.design.widget.TextInputLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        tools:errorEnabled="true"
        app:errorText="@{dataContext.validator.phoneValidation}">

        <android.support.design.widget.TextInputEditText
            android:layout_height="60dp"
            android:layout_width="match_parent"
            android:gravity="center"
            android:maxLines="1"
            android:inputType="phone"
            android:text="@={dataContext.phoneNumber}"
            style="@style/Widget.App.PurchaseAmountEditText" />

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

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

在此处输入图片说明

如您所见,第二个EditText渲染得低于第一个。当我在 Android Studio 的可视化编辑器中查看它时,我可以看到TextInputLayout它的顶部有一些可用空间,但是设置paddingTop="0dp"没有改变任何东西。那么如何让这两个EditTexts 以相同的方式呈现呢?

Mik*_* M. 6

默认情况下,android.support.design.widget.TextInputLayout会在顶部为浮动提示文本留出空间。如果您不使用浮动提示,您可以通过将以下内容添加到开始<TextInputLayout>元素来删除该空间。

app:hintEnabled="false"
Run Code Online (Sandbox Code Playgroud)

TextInputEditText当它为空时,常规提示文本仍将可见。


注意——这个答案不适用于当前的 Material Components 版本,它与原始版本明显不同。