Toast
すべてのテキストを中央揃えで表示する方法があるかどうか疑問に思いました。たとえば、Toast
2行のテキストが含まれているがあります。純粋に美的な理由から、テキストを左揃えではなく中央揃えにしたいと思います。ドキュメントを調べましたが、何も見つかりません。私が見逃したこれを行う簡単な方法はありますか?
46567 次
11 に答える
111
別の答えから適応:
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();
于 2012-11-21T12:01:21.803 に答える
28
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"
/>
そして、次のようにTextViewをトーストに割り当てます。
Toast t = new Toast(yourContext);
t.setView(yourNewTextView);
于 2010-08-19T13:28:19.190 に答える
25
ハックなし:
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();
センター以外にも別の配置があります。
于 2015-01-15T21:16:27.693 に答える
19
汚いハックですが
((TextView)((LinearLayout)toast.getView()).getChildAt(0))
.setGravity(Gravity.CENTER_HORIZONTAL);
于 2011-05-01T08:35:02.957 に答える
15
ToastのsetView(view)
関数を使用して、を指定View
しGravity.CENTER
ます。
于 2010-08-19T13:20:11.493 に答える
13
Toast toast = Toast.makeText(this, "Message", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
于 2011-05-07T15:10:24.453 に答える
5
それ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();
于 2014-04-24T10:18:39.717 に答える
2
kotlinで:
fun makeToast(context: Context, resId: Int) {
val toast = Toast.makeText(context, resId, Toast.LENGTH_SHORT)
val view = toast.view.findViewById<TextView>(android.R.id.message)
view?.let {
view.gravity = Gravity.CENTER
}
toast.show()
}
于 2018-06-06T06:20:09.853 に答える
1
それは私のための仕事です:
Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER| Gravity.BOTTOM, 0, 20);
toast.show();
于 2018-03-13T06:53:29.837 に答える
0
このバリエーションはLinearLayout
、レイアウトxmlで使用する場合に使用します:)
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();
于 2015-02-02T10:41:46.550 に答える
-3
Toast t=Toast.makeText(getApplicationContext(),"Text",Toast.LENGTH_LONG);
t.setText("Password Does't match...");
t.setGravity(0, 0, 0);
t.show();
トーストの簡単なコードはほとんど中心になります
于 2016-02-03T19:37:51.053 に答える