添加的EditText不是TextInputEditText。请切换到使用该类

时间:2016-03-03 15:13:40

标签: android android-layout android-edittext android-support-library android-textinputlayout

我在EditText内使用了TextInputLayout,但在将支持库升级到23.2.0之后,我在logcat中收到了这个警告,它们之间的区别是什么常规EditTextTextInputEditText?我似乎无法找到任何文档。

5 个答案:

答案 0 :(得分:102)

我也想知道这一点,Daniel Wilson收集了文件,但对于未经训练的人来说,这并不意味着什么。以下是它的全部内容:"extract mode"指的是当空间太小时显示的视图类型,例如手机上的风景。我正在使用Galaxy S4和谷歌键盘作为IME。

没有可见IME的横向UI

根据焦点(在描述上),您可以看到TextInputLayout在操作中将提示推到编辑器之外。这里没什么特别的,这就是TextInputLayout应该做的事情。

Landscape UI without visible IME

横向UI编辑空名称字段

编辑名称,您可以看到IME没有提供您正在编辑的内容的提示。

Landscape UI editing empty Name field

横向UI编辑空说明字段

编辑说明您可以看到IME为您提供了正在编辑的内容的提示。

Landscape UI editing empty Description field

布局XML

两个字段之间的区别在于其类型EditText VS 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>

答案 1 :(得分:29)

There is no documentation for it, but the class is a regular EditText with a single extra feature:

Using this class allows us to display a hint in the IME when in 'extract' mode.

Specifically it sets the EditorInfo.hintText. You'll notice in the TextInputLayout class you can specify the hint and it's appearance rather than as part of the child EditText widget.

If you need to do that, you should use a TextInputEditText so it pays attention to the hint info you specified in the TextInputLayout.

答案 2 :(得分:4)

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

答案 3 :(得分:0)

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

答案 4 :(得分:-3)

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

android: fitsSystemWindows = "true"

并且错误消失了。