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
这两个字段之间的区别在于它们的类型EditText
VS 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"
错误消失了。