Reputation: 51
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
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
Reputation: 790
There are several ways to resolve your prob.
Use Toast
Toast.makeText(getApplicationContext(), validate_msz, Toast.LENGTH_SHORT).show();
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>
Use Floating action Button according to your need.
http://developer.android.com/reference/android/support/design/widget/FloatingActionButton.html
Custom Dialog box.
Upvotes: 0
Reputation: 3149
Give the error to TextInputLayout.
...
txtInputLayout.setErrorEnabled();
txtInputLayout.setError("error text");
...
and the error will be displayed under edittext.
Upvotes: 0