需要知道TextInputEditText和TextInputLayout之间究竟有什么区别,我们应该何时使用其中一个。
答案 0 :(得分:22)
它们是不同的布局,相互补充功能。
它们应该像下面这样一起使用:
struct MyHash {
std::size_t operator()(const std::array<char, 12>& oid) const {
auto d = reinterpret_cast<const std::uint32_t*>(oid.data());
std::size_t prime = 31;
std::size_t other_prime = 59;
return d[2] + other_prime*(d[1] + prime*d[0]);
}
};
这就是官方文档中的全部内容:
<强> 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的子级。
答案 1 :(得分:7)
经验法则:TextInputLayout
应该换TextInputEditText
而不是正常EditText
。
原因:TextInputEditText
是EditText
的子类,旨在用作TextInputLayout
的子级。
使用EditText
代替TextInputEditText
会向我们发送警告:
添加的EditText不是TextInputEditText。请转而使用该课程。
例如,如果您在横向模式中包装EditText,您将获得一个大框,但缺少提示。
Android TextInputLayout功能:
在此处阅读更多内容 - https://www.journaldev.com/14748/android-textinputlayout-example
答案 2 :(得分:1)
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深入解释了这一点。我希望这能回答这个问题。谢谢。
答案 3 :(得分:0)
TextInputLayout
必须包含TextInputEditText
而不是普通的EditText
,因为它是专门为在内部使用而设计的。
如果在EditText
中添加TextInputEditText
而不是TextInputLayout
,则会收到警告:
EditText added is not a TextInputEditText. Please switch to using that class instead.
例如,如果在横向模式下包装EditText
,则会得到一个大框,但提示丢失。
TextInputLayout
具有浮动提示,错误标签,字符计数器,密码可见性,动画及其自定义功能