I'm using an EditText inside a TextInputLayout, but after upgrading the support library to 23.2.0, I get this warning in the logcat, What's the difference between a regular EditText and a TextInputEditText? I can't seem to find any documentation for it.
5 回答
我也想知道这一点,Daniel Wilson收集了文档,但对于未经训练的人来说,这并不意味着什么。这就是它的全部内容:“提取模式”是指当空间太小时显示的视图类型,例如手机上的风景。我正在使用带有 Google 键盘的 Galaxy S4 作为输入法编辑器 (IME)。
没有可见 IME 的横向 UI
基于焦点(在描述上),您可以看到TextInputLayout将提示推到编辑器之外。这里没什么特别的,这TextInputLayout是应该做的。
横向 UI 编辑空名称字段
编辑名称,您可以看到 IME 不会提示您正在编辑的内容。
横向 UI 编辑空的描述字段
编辑描述您可以看到 IME 提示您正在编辑的内容。
布局 XML
这两个字段之间的区别在于它们的类型EditTextVS TextInputEditText。这里重要的是TextInputLayout有android:hint而不是包装的 EditText,这就是当TextInputEditText' 的几行 Java 代码产生很大差异时的情况。
名称字段
<android.support.design.widget.TextInputLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Item Name"
>
<EditText
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</android.support.design.widget.TextInputLayout>
描述字段
<android.support.design.widget.TextInputLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Item Description"
>
<android.support.design.widget.TextInputEditText
android:id="@+id/description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:minLines="4"
android:scrollbars="vertical"
/>
</android.support.design.widget.TextInputLayout>
没有它的文档,但是该类是EditText具有单个额外功能的常规类:
使用此类允许我们在“提取”模式下在 IME 中显示提示。
具体来说,它设置了EditorInfo.hintText. 您会注意到在TextInputLayout课程中您可以指定提示及其外观,而不是作为子EditText小部件的一部分。
如果你需要这样做,你应该使用 aTextInputEditText所以它会注意你在TextInputLayout.
它们本质上是相同的东西,但我认为它们TextInputEditText具有更多的功能和可能的属性。我改成了TextInputEditText,一切正常,看起来和以前的标准一样EditText。
唯一的区别是,当您的设备处于横向模式时,TextInputEditText会显示提示,EditText不会。
我遇到了这个问题,只是在我的 xml 文件中删除了这一行:
android: fitsSystemWindows = "true"
错误消失了。


