46

最近 google 推出了新的 Android 设计库,介绍了如何使用TextInputLayout字段来启用 EditText 的浮动提示功能。

这里没有太多的指导。

这个页面说

您现在可以将其包装在 TextInputLayout

但不知道,因为智能预测 (Ctrl+SPACE) 不会预测 TextInputLayout 的任何属性。所以我的问题是:

我们如何获取该组件底层的 EditText?

我们如何从 EditText 获取数据?

4

9 回答 9

57

TextInputLayout扩展ViewGroup类。所以这意味着你必须把你EditTextTextInputLayout.

<android.support.design.widget.TextInputLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content">

     <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="hint"
        android:id="@+id/editText1" />

</android.support.design.widget.TextInputLayout>
于 2015-06-01T11:02:56.077 回答
6

做环绕TextInputLayoutTextInputEditText不是EditText.

环绕EditText在横向模式下确实存在问题。有关详细信息,请参阅 本文

<android.support.design.widget.TextInputLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content">

     <android.support.design.widget.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="hint"
        android:id="@+id/editText1" />

</android.support.design.widget.TextInputLayout>
于 2016-08-15T13:08:10.507 回答
4

这是在“用于编辑文本的浮动标签”下的设计支持库中定义的。

     <android.support.design.widget.TextInputLayout
            android:id="@+id/name_et_textinputlayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/activity_vertical_margin">

            <EditText
                android:id="@+id/FeedBackerNameET"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="hinttext"
                android:inputType="textPersonName|textCapWords" />
     </android.support.design.widget.TextInputLayout>
于 2015-08-18T20:26:08.057 回答
1

为了使其正常工作,您应该让您的应用程序主题从Theme.AppCompat(或其后代)主题扩展,例如 extends from Theme.AppCompat.Light.NoActionBar

于 2015-11-12T04:15:30.020 回答
1
<android.support.design.widget.TextInputLayout
    android:id="@+id/til_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/et_message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/type_message"
        android:maxLines="5"/>

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

一旦您开始输入编辑文本,提示将自动向上移动,并且出现在文本输入布局上的编辑文本集错误下方出现的错误,例如不是在编辑文本上

tilMessage.setError("Message field is empty!");

禁用错误

tilMessage.setErrorEnabled(false);
于 2016-04-23T05:19:14.953 回答
1

正确的方法...

<android.support.design.widget.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="10dp">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/card_id_edit_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/form_card_id_text"
                android:inputType="number"
                android:maxLength="10"/>
        </android.support.design.widget.TextInputLayout>

如果您像 TextInputLayout 的子项一样使用 EditText,您将在 Android Monitor 中看到此消息:

I/TextInputLayout:添加的EditText 不是TextInputEditText。请改用该类。

于 2017-08-28T16:42:15.393 回答
1

随着材料组件库有一个新的TextInputLayout组件。

只需使用:

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_text">

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

</com.google.android.material.textfield.TextInputLayout>

在此处输入图像描述在此处输入图像描述

官方文档中,您可以找到所有信息。

于 2019-09-06T11:01:23.150 回答
0

我们也可以使用 AppCompactEditText 来添加支持:appcompat in gradle

 <android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp">

    <android.support.v7.widget.AppCompatEditText
        android:id="@+id/et_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/hint"
        android:maxLength="100"
        android:inputType="textNoSuggestions"
        android:textColor="@color/colorPrimary"
        android:textSize="@dimen/font_size_large" />

</android.support.design.widget.TextInputLayout>
于 2017-02-01T11:40:30.983 回答
0

经验法则:TextInputLayout 应该包装 TextInputEditText 而不是普通的 EditText。

原因?TextInputEditText 是 EditText 的子类,旨在用作 TextInputLayout 的子类。

此外,使用 EditText 会向我们发出警告:添加的 EditText 不是 TextInputEditText。请改用该类。

于 2019-09-19T22:14:22.310 回答