Thursday 12 January 2017

Android Toast

Android Toast are used to show some messages for a small period of time. After showing information Toast disappear automatically.An android toast provide a kind of feedback for any action done by user.While showing an toast on the screen activity remain interactive and a toast does not take too much space on the screen. We can place toast on screen where we want like in center,bottom or top.

Android Toast Basics

Toast is class already defined in android system and we use its methods to show a popup message on the screen named as makeText(). This method takes three parameters- Application or activity context, a text message and duration for which toast will be shown on the screen. This method will return an toast object then by using show() method you can show the toast.

Example- 

Toast.maketext(getapplicationcontext,"message to show",Toast.LENGTH_SHORT).show();


This is enough to show an toast to user.Here duration can be of two types-
1. Length_Short
2. Length_Long

You can also give duration custom in form of milliseconds like 2000 will show toast for 2 seconds.

Setting Gravity to Android Toast

By default position of an Android Toast is near to Bottom of Android Device Screen, centered horizontally. You can change the position of toast using setGravity(int,int,int) method.
It takes three parameters one is a Gravity constant, an x-position offset, an y-position offset.You can see the Gravity constant on this link  Android Gravity Constant.

Example- 

toast.setGravity(Gravity.TOP|Gravity.LEFT,0,0)

It will show the toast on the top left side of android device screen. If you want to nudge the position to the right, increase the value of the second parameter.To nudge it down, increase the value of the last parameter. 

Creating Custom Toast

If you do not want this simple toast to show you can also create your own custom Toast messages.To do this you need to simple thing just define an layout either in any XML format or programmatically.
And just pass the root view to the method setView(rootView).

Example - 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/custom_toast_container"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:padding="8dp"
              android:background="#DAAA"
              >
    <ImageView android:src="@drawable/droid"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_marginRight="8dp"
               />
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:textColor="#FFF"
              />
</LinearLayout>
Notice that the ID of the LinearLayout element is "custom_toast_container". You must use this ID and the ID of the XML layout file "custom_toast" to inflate the layout, as shown here:

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
                (ViewGroup) findViewById(R.id.custom_toast_container));
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("This is a custom toast");
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
First, retrieve the LayoutInflater with getLayoutInflater() (or getSystemService()), and then inflate the layout from XML using inflate(int, ViewGroup). The first parameter is the layout resource ID and the second is the root View. You can use this inflated layout to find more View objects in the layout, so now capture and define the content for the ImageView and TextView elements. Finally, create a new Toast with Toast(Context) and set some properties of the toast, such as the gravity and duration. Then call setView(View) and pass it the inflated layout. You can now display the toast with your custom layout by calling show().



No comments:

Post a Comment