Android中的文本中心文本
我想知道是否有一种方法来显示所有的文字在敬酒中心。 例如,我有一个有两行文字的祝酒词。 出于纯粹的美学原因,我希望文本中心alignment,而不是左alignment。 我查看了文档,找不到任何关于它的信息。 有没有简单的方法来做到这一点,我错过了?
谢谢Chris
使用Toast的setView(view)
函数来提供一个View
with Gravity.CENTER
。
改编自另一个答案 :
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();
Toastbuild立在TextView上,并且它的默认重力是左alignment的。 所以,你需要像这样创build自己的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" />
然后将TextView分配给Toast,如下所示:
Toast t = new Toast(yourContext); t.setView(yourNewTextView);
这是肮脏的黑客,但
((TextView)((LinearLayout)toast.getView()).getChildAt(0)) .setGravity(Gravity.CENTER_HORIZONTAL);
没有黑客:
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();
除了中心之外,还有另一种路线。
资源
Toast toast = Toast.makeText(this, "Message", Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 0); toast.show();
不是说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)); } } }
接着:
Toast t = Toast.makeText(context, msg,Toast.LENGTH_SHORT); centerText(t.getView()); t.show();
这种变化是使用LinearLayout。 🙂
Toast SampleToast = Toast.makeText(this, "This is the example of centered text.\nIt is multiline text.", Toast.LENGTH_SHORT); LinearLayout OurLayout = (LinearLayout) SampleToast.getView(); if (OurLayout.getChildCount() > 0) { TextView SampleView = (TextView) OurLayout.getChildAt(0); SampleView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); } SampleToast.show();
Toast t=Toast.makeText(getApplicationContext(),"Text",Toast.LENGTH_LONG); t.setText("Password Does't match..."); t.setGravity(0, 0, 0); t.show();
简单的代码为最敬重的中心