setError отображает текст во всплывающем окне, а не под EditText

Я следую этому руководству, чтобы отобразить ошибку и < href="https://android-developers.googleblog.com/2015/05/android-design-support-library.html" rel="nofollow noreferrer">этот документ для его реализации. Он отлично работает, но вместо того, чтобы отображать ошибки под EditText, они плавают вверху со значком предупреждения.

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

<style name="error" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/accent</item> <!--apply the color you wat here -->
    <item name="android:textSize">12dp</item>
</style>


<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="30dp"
    app:errorEnabled="true"
    app:errorTextAppearance="@style/error">
        <android.support.design.widget.TextInputEditText
        android:id="@+id/txtPhoneNumber"
        android:textSize="24dp"
        android:singleLine="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Phone Number" />
</android.support.design.widget.TextInputLayout>


txtPhoneNumber.setError("Invalid Format");

Как я могу сделать так, чтобы ошибки отображались под EditText?


person Alexey Strakh    schedule 09.08.2017    source источник


Ответы (1)


Вы должны передать TextInputLayout Объект есть.

  <android.support.design.widget.TextInputLayout
   android:id="@+id/txtLayout">
   .........    
</android.support.design.widget.TextInputLayout>

Затем

  txtLayoutOBJ.setError("Invalid Format");
person IntelliJ Amiya    schedule 09.08.2017
comment
о, я должен использовать макет, а не редактировать текст, круто - person Alexey Strakh; 09.08.2017
comment
@АлексейСтрах Да. Используйте TextInputLayout вместо TextInputEditText - person IntelliJ Amiya; 09.08.2017