【发布时间】:2016-10-16 11:14:32
【问题描述】:
需要知道 TextInputEditText 和 TextInputLayout 之间的实际区别,什么时候应该使用其中之一。
【问题讨论】:
标签: android android-studio android-widget android-design-library
需要知道 TextInputEditText 和 TextInputLayout 之间的实际区别,什么时候应该使用其中之一。
【问题讨论】:
标签: android android-studio android-widget android-design-library
它们是相互补充功能的不同布局。
它们应该像下面这样一起使用:
<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 的子级。
【讨论】:
TextInputLayout 和 TextInputEditText 是不同的。如文档Here 中所述,TextInputLayout 和 TextInputEditText 旨在像以下示例一样使用(来自官方文档)
<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="@string/form_username"/>
</android.support.design.widget.TextInputLayout>
此外,主要区别在于将TextInputEditText 与EditText 进行比较。当以横向模式查看布局时,TextInputEditText 会提供提示。 TWiStErRob 对此进行了深入的解释。我希望这能回答这个问题。谢谢。
【讨论】:
TextInputLayout 必须包含TextInputEditText 而不是普通的EditText,因为它是专门为在内部使用而设计的。
如果您将 EditText 而不是 TextInputEditText 添加到 TextInputLayout 中,您将收到警告:
EditText added is not a TextInputEditText. Please switch to using that class instead.
例如,如果你包裹EditText,在横向模式下,你会得到一个大盒子,但提示不见了。
TextInputLayout 具有浮动提示、错误标签、字符计数器、密码可见性、动画及其自定义等功能
【讨论】: