Макет TextInput показывает значок ошибки редактирования текста в центре в API17

Я использую Appcompact Edittext с макетом TextInput. Когда я устанавливаю ошибку в тексте редактирования, он показывает значок ошибки в центре текста текста вместо конца, как показано на рисунке ниже.

Я сейчас получаю вот так

Когда я удаляю макет Textinput из макета XML, он показывает значок в нужном месте.

РЕДАКТИРОВАТЬ Мой макет XML, как показано ниже.

<ScrollView
android:layout_width="fill_parent"
android:fitsSystemWindows="true"
android:layout_height="fill_parent"
android:background="@color/white"
xmlns:android="http://schemas.android.com/apk/res/android"
>


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:paddingLeft="@dimen/_10sdp"
    android:paddingRight="@dimen/_10sdp"
    android:layout_gravity="center_vertical"
    android:id="@+id/activity_login_parent_layout"
    android:orientation="vertical">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/circleView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:focusableInTouchMode="false"
        android:focusable="false"
        android:layout_marginTop="@dimen/_30sdp"
        android:src="@drawable/logo" />

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <android.support.v7.widget.AppCompatEditText
            android:id="@+id/activity_user_login_username_et"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxLines="1"
            android:minLines="1"
            android:singleLine="true"
            android:inputType="text"
            android:focusableInTouchMode="true"
            android:layout_marginTop="@dimen/_30sdp"
            android:hint="Username" />
    </android.support.design.widget.TextInputLayout>

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
      >

        <android.support.v7.widget.AppCompatEditText
            android:id="@+id/activity_user_login_password_et"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/_10sdp"
            android:maxLines="1"
            android:minLines="1"
            android:hint="Password"
            android:singleLine="true"
            android:focusableInTouchMode="true"
            android:imeOptions="actionDone"
            android:inputType="textPassword" />
    </android.support.design.widget.TextInputLayout>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/_5sdp"
        android:gravity="right"
        android:visibility="gone"
        android:id="@+id/activity_user_login_forgot_pwd_tv"
        android:paddingRight="@dimen/_10sdp"
        android:text="Forgot Password?" />
    <Button
        android:id="@+id/activity_user_login_btn"
        style="@style/button"
        android:layout_marginLeft="@dimen/_20sdp"
        android:layout_marginRight="@dimen/_20sdp"
        android:layout_marginTop="@dimen/_20sdp"
        android:layout_marginBottom="@dimen/_10sdp"
        android:layout_width="fill_parent"
        android:textAllCaps="false"
        android:layout_height="wrap_content"
        android:text="Login" />
    <Button
        android:layout_width="wrap_content"
        android:text="Change URL"
        android:id="@+id/activity_user_login_change_url_btn"
        style="@style/Base.Widget.AppCompat.Button.Borderless"
        android:paddingLeft="@dimen/_50sdp"
        android:layout_marginRight="@dimen/_20sdp"
        android:drawablePadding="@dimen/_5sdp"
        android:drawableLeft="@drawable/change_url"
        android:layout_gravity="right"
        android:textColor="@color/grey"
        android:textAllCaps="false"
        android:gravity="right|center_vertical"
        android:layout_height="wrap_content" />



    </LinearLayout>
</ScrollView>

Мой код такой: код для входа

Любая помощь будет высоко оценена.

2 ответа

  • Измени свой <android.support.v7.widget.AppCompatEditText>..</> с <android.support.design.widget.TextInputEditText>...</>,

  • Если проблема не устранена, попробуйте установить Error сообщение только для TextInputLayout и удалить его из EditText объект.

Ошибка установки на InputTextLayoutизмените это с вашими значениями:

private boolean usernameValidation(String your_username){
    if (TextUtils.isEmpty(your_username)){
        your_username_inputTextLayout.setError("Enter Username!");
        return false;
    }else {
        your_username_inputTextLayout.setErrorEnabled(false);
    }
    return true;
}

Вы можете использовать EditText с TextInputLayout.

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:animateLayoutChanges="true"
    app:hintEnabled="false">

        <android.support.v7.widget.AppCompatEditText
            android:id="@+id/edit_input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/hint_text"/>

</android.support.design.widget.TextInputLayout>

Таким образом, вы можете создать вывод ошибок в соответствии с рекомендациями по дизайну

Вы также можете написать app:hintEnabled="true" получить плавающую метку для ввода текста.

Другие вопросы по тегам