TextInputLayout和TextInputEditText之间的区别

时间:2016-06-15 11:09:43

标签: android android-studio android-widget android-design-library

需要知道TextInputEditText和TextInputLayout之间究竟有什么区别,我们应该何时使用其中一个。

4 个答案:

答案 0 :(得分:22)

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

  • TextInputLayout扩展了LinearLayout
  • TextInputEditText扩展了EditText

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

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
原因TextInputEditTextEditText的子类,旨在用作TextInputLayout的子级。

使用EditText代替TextInputEditText会向我们发送警告

  

添加的EditText不是TextInputEditText。请转而使用该课程。

例如,如果您在横向模式中包装EditText,您将获得一个大框,但缺少提示。

Android TextInputLayout功能:

  • 启用/禁用浮动提示
  • 启用/禁用浮动提示动画
  • 显示错误消息
  • 显示角色计数器
  • 当字符数超过其限制时警告用户
  • 自定义浮动提示的文本外观, 错误标签,字符计数器
  • 密码可见性切换

在此处阅读更多内容 - https://www.journaldev.com/14748/android-textinputlayout-example

答案 2 :(得分:1)

TextInputLayoutTextInputEditText都不同。正如文档Here中所述,TextInputLayoutTextInputEditText的使用方式与以下示例相同(来自官方文档)

<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>

另一个主要区别在于您将TextInputEditTextEditText进行比较。 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具有浮动提示,错误标签,字符计数器,密码可见性,动画及其自定义功能