保持 Textinputlayout 提示始终位于顶部

Keep Textinputlayout hint always top

是否可以让我的提示文本始终置顶,就好像它是可聚焦的一样?

我试过这个:

 <android.support.design.widget.TextInputLayout
            android:id="@+id/etSurnameInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/llNameImage"
            android:hint="My Hint Text"
            app:hintEnabled="true"
            app:hintAnimationEnabled="false"
            android:textColorHint="@color/gray_title">

这是一个技巧 - 如果文本为空,则以编程方式在文本中添加 space。但是,如果 space 获得焦点,则您必须删除它,否则用户将开始使用前导白色 space 进行键入。另一种选择是始终 trim 用户输入的文本。

我当时的最终解决方案实际上只是设置 hintEnabled="false" 并在顶部使用 TextView。

您可以将 android:minLines="2" 设置为 TextInputEditText 或大于 2。同时保持 android:gravity="top"

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:gravity="top"
        android:hint="Username"
        android:minLines="2" />

实际上,从 com.google.android.material:material:1.3.0-alpha03 或更高版本开始,您可以简单地设置 app:expandedHintEnabled="false" 使其始终浮动。

将 android:textAlignment="center" 设置为 TextInputEditText 并将 android:gravity="start" 设置为 TextInputLayout

<com.google.android.material.textfield.TextInputLayout
                android:id="@+id/tilName"
                app:expandedHintEnabled="false"
                android:hint="@string/name_hint"
                android:gravity="start"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <com.google.android.material.textfield.TextInputEditText
                    android:layout_gravity="center"
                    android:hint="@string/name_hint"
                    android:textAlignment="center"
                    android:id="@+id/fieldName"
                    android:inputType="text"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    />