Mar*_*arc 101
改编自另一个答案:
Toast toast = Toast.makeText(this, "Centered\nmessage", Toast.LENGTH_SHORT);
TextView v = (TextView) toast.getView().findViewById(android.R.id.message);
if( v != null) v.setGravity(Gravity.CENTER);
toast.show();
Run Code Online (Sandbox Code Playgroud)
Sep*_*phy 26
Toast构建在TextView上,其默认重力左对齐.因此,您需要创建自己的TextView,例如:
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="all the text you want"
/>
Run Code Online (Sandbox Code Playgroud)
并将TextView分配给Toast,如下所示:
Toast t = new Toast(yourContext);
t.setView(yourNewTextView);
Run Code Online (Sandbox Code Playgroud)
Mik*_*ail 19
这是肮脏的黑客,但是
((TextView)((LinearLayout)toast.getView()).getChildAt(0))
.setGravity(Gravity.CENTER_HORIZONTAL);
Run Code Online (Sandbox Code Playgroud)
Yet*_*ser 19
没有黑客攻击:
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();
Run Code Online (Sandbox Code Playgroud)
除了中心之外还有另一个路线.
小智 9
Toast toast = Toast.makeText(this, "Message", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
Run Code Online (Sandbox Code Playgroud)
不是说这findViewById(android.R.id.message)是错误的,但以防万一(未来?)实现差异,我自己使用了一些不同的方法:
void centerText(View view) {
if( view instanceof TextView){
((TextView) view).setGravity(Gravity.CENTER);
}else if( view instanceof ViewGroup){
ViewGroup group = (ViewGroup) view;
int n = group.getChildCount();
for( int i = 0; i<n; i++ ){
centerText(group.getChildAt(i));
}
}
}
Run Code Online (Sandbox Code Playgroud)
进而:
Toast t = Toast.makeText(context, msg,Toast.LENGTH_SHORT);
centerText(t.getView());
t.show();
Run Code Online (Sandbox Code Playgroud)