EditText added is not a TextInputEditText. Please switch to using that class instead

AndroidAndroid LayoutAndroid EdittextAndroid Support-LibraryAndroid Textinputlayout

Android Problem Overview


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.

Android Solutions


Solution 1 - Android

I was wondering this too, Daniel Wilson gathered the documentation, but to the untrained eye it doesn't mean much. Here's what it's all about: "extract mode" is referring to the type of view that's shown when the space is too small, for example landscape on a phone. I'm using Galaxy S4 with Google Keyboard as input method editor (IME).

Landscape UI without visible IME

Based on the focus (on Description) you can see TextInputLayout in action pushing the hint outside the editor. Nothing special here, this is what TextInputLayout is supposed to do.

Landscape UI without visible IME

Landscape UI editing empty Name field

Editing the Name you can see that the IME doesn't give you a hint of what you're editing.

Landscape UI editing empty Name field

Landscape UI editing empty Description field

Editing the Description you can see that the IME gives you a hint of what you're editing.

Landscape UI editing empty Description field

Layout XMLs

The difference between the two fields is their type EditText VS TextInputEditText. The important thing here is that TextInputLayout has the android:hint and not the wrapped EditText, this is the case when TextInputEditText's few lines of Java code makes a big difference.

Name field

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

Description field

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

Solution 2 - Android

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.

Solution 3 - Android

They are essentially the same thing, but I think the TextInputEditText has more features and possibly attributes. I changed to the TextInputEditText and everything worked and looked as it did before with the standard EditText.

Solution 4 - Android

The only difference is that when your device is in landscape mode, TextInputEditText will show the hint, EditText won't.

Solution 5 - Android

I had this problem and just deleted this line in my xml file:

android: fitsSystemWindows = "true"

and the error disappeared.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSilvia HView Question on Stackoverflow
Solution 1 - AndroidTWiStErRobView Answer on Stackoverflow
Solution 2 - AndroidDaniel WilsonView Answer on Stackoverflow
Solution 3 - AndroidNick MowenView Answer on Stackoverflow
Solution 4 - AndroidSam ChenView Answer on Stackoverflow
Solution 5 - AndroidSantos RodriguezView Answer on Stackoverflow