AJW
AJW

Reputation: 1649

Android: why is setError message causing View distortion?

I have two versions of an app I'm working on. The first version has a setError message that is set on an EditText UI line if the user tries to save data and the line is empty. The gradle dependencie uses version 24.0.0.

The message appears correctly as:

enter image description here

The second version of the app has the same setError code but the View looks distorted because it looks like the Edit Text line has been pushed down by the View so it no longer directly below the "Do" text and the red circular exclamation point is moved down to the left of the error message. This version uses the gradle dependencie version 24.2.0.

enter image description here

Any ideas on what could be causing this?

Per Mike M's comment below, I used the setError() on the TextInputLayout but that results in a completely different error message that shows up below the beginning of the EditText line that I'd rather not use:

enter image description here

Activity.java

...
public void onClickSave(View v) {
    int stringTD = EditText.getText().toString().replace(" ", "").length();
    if (stringTD == 0) {
        EditText.requestFocus();            
        EditText.setError("Add a Do Item");

layout.xml

...
<android.support.design.widget.TextInputLayout
    android:id="@+id/TD_text_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColorHint="@color/colorFlLabelFinal"
    app:hintTextAppearance="@style/FloatingLabel"  >

<com.EditText
    android:id="@+id/EditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="2dp"
    android:inputType="text|textCapSentences|textNoSuggestions"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="#FFFFFF"
    android:textIsSelectable="true"
    android:textColorHighlight="@color/colorPrimary"
    android:paddingLeft="5dp"
    android:paddingStart="5dp"
    android:drawableStart="@drawable/24dp"
    android:drawableLeft="@drawable/24dp"
    android:drawablePadding="5dp"
    android:maxLines="1"
    android:maxLength="51"
    android:imeOptions="actionNext|flagNoExtractUi"
    android:nextFocusDown="@+id/DEditText" />

Upvotes: 0

Views: 1562

Answers (1)

dum4ll3
dum4ll3

Reputation: 1457

According to this, if you use an EditText inside a TextInputLayout this kind of behavior occurs after version 24+. So the solution right now would be to use the EditText alone.

Try it and see if it works.

Upvotes: 1

Related Questions