如何在新的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。 请切换到使用该类。