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】:TextInputLayout
和 TextInputEditText
是不同的。如文档Here 中所述,TextInputLayout
和 TextInputEditText
旨在像以下示例一样使用(来自官方文档)
<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>
此外,主要区别在于将TextInputEditText
与EditText
进行比较。当以横向模式查看布局时,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 的简单介绍以及使用
Android:TextInputLayout - 自定义提示、底线和错误消息的颜色