Макет 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"
получить плавающую метку для ввода текста.