如何在新的androiddevise库中使用TextInputLayout

最近谷歌推出了新的Androiddevise库,如何使用TextInputLayout字段来启用EditText的浮动提示function。

这里没有太多的指导。

这个页面说

你现在可以把它包装在一个TextInputLayout中

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

我们如何获得这个组件的EditText?

我们如何从EditText获取数据?

TextInputLayout扩展了ViewGroup类。 所以这意味着你必须把你的EditText包装在TextInputLayout

 <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> 

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

  <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> 

TextInputLayout包装在TextInputEditText而不是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> 
 <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> 

提示将自动向上移动,一旦你开始input编辑文本,并有这些错误出现在编辑文本下面的文本input布局错误如此不编辑文本

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

禁用错误

 tilMessage.setErrorEnabled(false); 

为了使这个效果好,你应该让你的应用程序主题扩展从Theme.AppCompat (或其后代)的主题,如从Theme.AppCompat.Light.NoActionBar延伸。

我们也可以使用AppCompactEditText来为这个需要添加支持:appcompat在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> 

正确的方法…

 <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。 请切换到使用该类。