添加的EditText不是TextInputEditText。请改用该类


92

我在EditText内部使用a TextInputLayout,但是将支持库升级到23.2.0之后,我在logcat中收到此警告,常规EditText和a有TextInputEditText什么区别?我似乎找不到任何文档。


我已经将支持库升级到23.2.1,但仍然无法在代码中解析TextInputEditText。您是如何解决的?
Edijae Crusar

Answers:


109

我也想知道,丹尼尔·威尔逊Daniel Wilson)收集了文档,但是对于未经培训的人来说,意义不大。这就是全部内容:“提取模式”是指当空间太小(例如手机的风景)时显示的视图类型。我正在将Galaxy S4和Google Keyboard用作输入法编辑器(IME)。

没有可见IME的风景UI

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

没有可见IME的风景UI

景观UI编辑空的名称字段

编辑名称,您会看到IME并没有提示您正在编辑什么。

景观UI编辑空的名称字段

横向用户界面编辑空白说明字段

编辑说明,您会看到IME给您提示您正在编辑的内容。

横向用户界面编辑空白说明字段

布局XML

这两个领域之间的区别是它们的类型EditTextVS TextInputEditText。这里重要的是TextInputLayout具有android:hint而不是包装的EditText,这是TextInputEditTextJava的几行代码起很大作用的情况。

名称栏位

<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>

3
我已经将支持库升级到23.2.1,但仍然无法在代码中解析TextInputEditText。您是如何解决的?
Edijae Crusar

您是否还有设计库?这不受支持。
TWiStErRob '16

1
快速说明:根据文档,该android:hint属性应该TextInputEditText代替TextInputLayout
DriesOeyen '16

1
@luxsypher我最终将其删除,并使用另一种方式将EditText放入TextInputLayout
Edijae Crusar

1
@ jeet.chanchawat这是个an跷,所以很安全。您应该始终使用为您提供所需功能(= API)的最通用类型。使用TextInputEditText是UI的实现细节。
TWiStErRob '16

34

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

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

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

如果需要这样做,则应使用,TextInputEditText以便它注意您在中指定的提示信息TextInputLayout


2
有什么例子吗?我不知道您的建议
相信

4

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


我已经使用了TextInputLayout,我想问一个称为TextInputEditText的EditText的替代方法
Silvia H

抱歉,我在谈论TextInputEditText,但说的是布局。我编辑了答案
Nick Mowen

0

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.