99

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.

4

5 回答 5

113

我也想知道这一点,Daniel Wilson收集了文档,但对于未经训练的人来说,这并不意味着什么。这就是它的全部内容:“提取模式”是指当空间太小时显示的视图类型,例如手机上的风景。我正在使用带有 Google 键盘的 Galaxy S4 作为输入法编辑器 (IME)。

没有可见 IME 的横向 UI

基于焦点(在描述上),您可以看到TextInputLayout将提示推到编辑器之外。这里没什么特别的,这TextInputLayout是应该做的。

没有可见 IME 的横向 UI

横向 UI 编辑空名称字段

编辑名称,您可以看到 IME 不会提示您正在编辑的内容。

横向 UI 编辑空名称字段

横向 UI 编辑空的描述字段

编辑描述您可以看到 IME 提示您正在编辑的内容。

横向 UI 编辑空的描述字段

布局 XML

这两个字段之间的区别在于它们的类型EditTextVS TextInputEditText。这里重要的是TextInputLayoutandroid: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>
于 2016-03-28T18:53:38.447 回答
35

没有它的文档,但是该类是EditText具有单个额外功能的常规类:

使用此类允许我们在“提取”模式下在 IME 中显示提示。

具体来说,它设置了EditorInfo.hintText. 您会注意到在TextInputLayout课程中您可以指定提示及其外观,而不是作为子EditText小部件的一部分。

如果你需要这样做,你应该使用 aTextInputEditText所以它会注意你在TextInputLayout.

于 2016-03-04T18:19:05.963 回答
4

它们本质上是相同的东西,但我认为它们TextInputEditText具有更多的功能和可能的属性。我改成了TextInputEditText,一切正常,看起来和以前的标准一样EditText

于 2016-03-03T15:15:21.447 回答
1

唯一的区别是,当您的设备处于横向模式时,TextInputEditText会显示提示,EditText不会。

于 2020-02-11T03:07:35.383 回答
-3

我遇到了这个问题,只是在我的 xml 文件中删除了这一行:

android: fitsSystemWindows = "true"

错误消失了。

于 2017-07-05T23:45:45.197 回答