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

问题描述 投票:85回答:4

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

android android-layout android-edittext android-support-library android-textinputlayout
4个回答
102
投票

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

Landscape UI without visible IME

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

Landscape UI without visible IME

Landscape UI editing empty Name field

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

Landscape UI editing empty Name field

Landscape UI editing empty Description field

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

Landscape UI editing empty Description field

Layout XMLs

两个领域之间的区别是他们的类型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>

29
投票

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

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

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

如果你需要这样做,你应该使用TextInputEditText,所以它会注意你在TextInputLayout中指定的提示信息。


4
投票

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


-3
投票

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

android: fitsSystemWindows = "true"

并且错误消失了。

© www.soinside.com 2019 - 2024. All rights reserved.