I was wondering if there was a way to display all text in a toast to be centered. For instance, I have a toast that has 2 lines of text in it. For purely aesthetic reasons,
It is dirty hack, but
((TextView)((LinearLayout)toast.getView()).getChildAt(0))
.setGravity(Gravity.CENTER_HORIZONTAL);
Toast is built on a TextView and the default gravity of it is left aligned. So, you need to create your own TextView like this for instance :
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="all the text you want"
/>
And you assign the TextView to the Toast like this :
Toast t = new Toast(yourContext);
t.setView(yourNewTextView);
Without the hacks:
String text = "Some text";
Spannable centeredText = new SpannableString(text);
centeredText.setSpan(new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER),
0, text.length() - 1,
Spannable.SPAN_INCLUSIVE_INCLUSIVE);
Toast.makeText(getActivity(), centeredText, Toast.LENGTH_LONG).show();
There are also another alignments besides center.
source
Use the Toast's setView(view)
function to supply a View
with Gravity.CENTER
.
It is work for me:
Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER| Gravity.BOTTOM, 0, 20);
toast.show();
Toast t=Toast.makeText(getApplicationContext(),"Text",Toast.LENGTH_LONG);
t.setText("Password Does't match...");
t.setGravity(0, 0, 0);
t.show();
simple code for toast most be center