TextInput布局在API17的中心显示edittext错误图标

时间:2017-01-16 09:28:08

标签: android android-textinputlayout android-textinputedittext

我正在使用带有TextInput布局的Appcompact Edittext。  当我在edittext上设置错误时,它会在edittext的中心显示错误图标,而不是像图像下方那样结束。

I am getting now like this

当我从布局xml中删除Textinput布局时,它会在适当的位置显示图标。

修改 我的布局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>

我的代码是这样的: code for login

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

  • 使用<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;
}

答案 1 :(得分:0)

您可以将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>

这样您就可以根据material design guidlines

创建错误输出

您还可以撰写app:hintEnabled="true"以获取floating label文字输入。