TextInputLayout 和 TextInputEditText 的区别

Posted

技术标签:

【中文标题】TextInputLayout 和 TextInputEditText 的区别【英文标题】:Difference between TextInputLayout and TextInputEditText 【发布时间】:2016-10-16 11:14:32 【问题描述】:

需要知道 TextInputEditText 和 TextInputLayout 之间的实际区别,什么时候应该使用其中之一。

【问题讨论】:

【参考方案1】:

它们是相互补充功能的不同布局。

TextInputLayout 扩展了 LinearLayout TextInputEditText 扩展了 EditText

它们应该像下面这样一起使用:

<TextInputLayout>
   <TextInputEditText/>
</TextInputLayout>

官方文档上都有:

TextInputLayout:

https://developer.android.com/reference/android/support/design/widget/TextInputLayout.html

当提示因用户输入文本而隐藏时,包装 EditText(或后代)以显示浮动标签的布局

TextInputEditText:

https://developer.android.com/reference/android/support/design/widget/TextInputEditText.html

EditText 的一个特殊子类,设计用作 TextInputLayout 的子级。

【讨论】:

【参考方案2】:

TextInputLayoutTextInputEditText 是不同的。如文档Here 中所述,TextInputLayoutTextInputEditText 旨在像以下示例一样使用(来自官方文档)

<android.support.design.widget.TextInputLayout
     android:layout_
     android:layout_>

<android.support.design.widget.TextInputEditText
         android:layout_
         android:layout_
         android:hint="@string/form_username"/>

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

此外,主要区别在于将TextInputEditTextEditText 进行比较。当以横向模式查看布局时,TextInputEditText 会提供提示。 TWiStErRob 对此进行了深入的解释。我希望这能回答这个问题。谢谢。

【讨论】:

【参考方案3】:

TextInputLayout 必须包含TextInputEditText 而不是普通的EditText,因为它是专门为在内部使用而设计的。

如果您将 EditText 而不是 TextInputEditText 添加到 TextInputLayout 中,您将收到警告:

EditText added is not a TextInputEditText. Please switch to using that class instead.

例如,如果你包裹EditText,在横向模式下,你会得到一个大盒子,但提示不见了。

TextInputLayout 具有浮动提示、错误标签、字符计数器、密码可见性、动画及其自定义等功能

【讨论】:

我没有看到这个警告。

以上是关于TextInputLayout 和 TextInputEditText 的区别的主要内容,如果未能解决你的问题,请参考以下文章

TextInputLayout 和 AutoCompleteTextView

TextInputLayout 和 TextInputEditText 的简单介绍以及使用

3分钟学会TextInputLayout

Android:TextInputLayout - 自定义提示、底线和错误消息的颜色

基线对齐的 TextInputLayout 和 Spinner

更改 TextInputLayout 仅提示文本样式