swiki
swiki

Reputation: 51

Android Edit Text error overlaps other components

I have a problem that error message displayed by edit text overlaps other components on layout.

Does anybody have an idead how to display error message behind top and bottom layouts?

Little bit about structure: Top red and bottom grey parts Linear Layouts. Main middle content is Frame Layout, whose content is handled by application. In this case there are several edit texts wrapped in Scroll View.

<android.support.v4.widget.CustomDrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
tools:context=".MainActivity">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:fitsSystemWindows="true">

    <com.custom.TitlebarLayout
        android:id="@+id/titlebarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"/>


    <FrameLayout
        android:id="@+id/contentContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white"
        android:layout_gravity="top"/>

    <com.custom.ButtonsToolbarLayout
        android:id="@+id/buttonsToolbarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:gravity="center_vertical|left"
        android:orientation="horizontal"/>

</RelativeLayout>

Inside contentContainer is below layout:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         xmlns:msa="http://schemas.android.com/apk/res-auto"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         tools:context=".fragment.addressedit.AddressEditFragment"
         android:id="@+id/frame_layout_address_edit">

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/scrollview_address_dialog"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:isScrollContainer="true"
        android:orientation="horizontal">

        <com.custom.editview.EditViewLayout
            android:id="@+id/edittext_address_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/linearlayout_address_top"
            android:hint="Name"
            android:maxLength="30"
            android:maxLines="1"
            android:singleLine="true"
            android:inputType="textCapCharacters"
            android:tag="etx_name1"/>

        <com.custom.editview.EditViewLayout
            android:id="@+id/edittext_address_name2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/edittext_address_name"
            android:hint="Name2"
            android:maxLength="30"
            android:maxLines="1"
            android:singleLine="true"
            android:inputType="textCapCharacters"
            android:tag="etx_name2"/>

        <com.custom.editview.EditViewLayout
            android:id="@+id/edittext_address_street"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/edittext_address_name2"
            android:hint="Street"
            android:maxLength="30"
            android:maxLines="1"
            android:singleLine="true"
            android:inputType="textCapCharacters"
            android:tag="etx_street"/>

        <com.custom.editview.EditViewLayout
            android:id="@+id/edittext_address_houseno"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/edittext_address_street"
            android:hint="House No."
            android:maxLength="8"
            android:maxLines="1"
            android:singleLine="true"
            android:inputType="number"
            msa:alternativeInputType="textNoSuggestions"
            android:tag="etx_house_no"/>

        <com.custom.editview.EditViewLayout
            android:id="@+id/edittext_address_postcode"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/edittext_address_houseno"
            android:hint="Postcode"
            android:maxLength="10"
            android:maxLines="1"
            android:singleLine="true"
            android:inputType="textPostalAddress"
            android:tag="etx_postcode1"
            msa:validation="postcode"/>

        <com.custom.editview.EditViewLayout
            android:id="@+id/edittext_address_city"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/edittext_address_postcode"
            android:hint="City"
            android:maxLength="30"
            android:maxLines="1"
            android:singleLine="true"
            android:inputType="textCapCharacters"
            android:tag="etx_city"/>

        <com.custom.editview.EditViewLayout
            android:id="@+id/edittext_address_country"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/edittext_address_city"
            android:hint="Country"
            android:maxLength="5"
            android:maxLines="1"
            android:singleLine="true"
            android:inputType="textCapCharacters"
            android:tag="etx_country"/>

        <com.custom.editview.EditViewLayout
            android:id="@+id/edittext_address_phone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/edittext_address_country"
            android:hint="Phone"
            android:maxLength="20"
            android:maxLines="1"
            android:singleLine="true"
            android:inputType="phone"
            android:tag="etx_phone1"/>

    </RelativeLayout>

</ScrollView>

Upvotes: 3

Views: 2423

Answers (3)

Alok Singh
Alok Singh

Reputation: 31

Just do a simple tweak and you're good to go..

scrollView.setOnTouchListener(new View.OnTouchListener() {
 @Override
        public boolean onTouch(View v, MotionEvent event) {
            addressName.clearFocus();
            addressName2.clearFocus();
            houseNo.clearFocus();
            phone.clearFocus();
            return false;
        }
    })

;

Upvotes: 2

Laxmeena
Laxmeena

Reputation: 790

There are several ways to resolve your prob.

  1. Use Toast

    Toast.makeText(getApplicationContext(), validate_msz, Toast.LENGTH_SHORT).show();
    
  2. Use Relative Layout To set your error message layout to bottom and top

    <RelativeLayout      xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingBottom="@dimen/activity_vertical_margin"
      android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
       android:paddingTop="@dimen/activity_vertical_margin"
      >
     <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="bottom"
    android:orientation="vertical"
    android:paddingBottom="0dp">
    
    <Button
        android:id="@+id/btn_password_save"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal"
        android:background="#e91043"
        android:padding="10dp"
        android:paddingBottom="0dp"
        android:text="SAVE "
        android:textColor="@android:color/white" />
    
      </LinearLayout>
       </RelativeLayout>
    
  3. Use Floating action Button according to your need.

    http://developer.android.com/reference/android/support/design/widget/FloatingActionButton.html

  4. Custom Dialog box.

Upvotes: 0

dgngulcan
dgngulcan

Reputation: 3149

Give the error to TextInputLayout.

...
    txtInputLayout.setErrorEnabled();
    txtInputLayout.setError("error text");
...

and the error will be displayed under edittext.

Upvotes: 0

Related Questions