AlertDialog のタイトルとメッセージのテキストを右揃えにすることは可能ですか?
ヘブライ語のメッセージを表示していますが、左詰めで表示されています。
AlertDialog のタイトルとメッセージのテキストを右揃えにすることは可能ですか?
ヘブライ語のメッセージを表示していますが、左詰めで表示されています。
これをすばやく簡単に行う方法が必要な場合は、AlertDialog.Builder を使用して既定のアラートを作成および変更します。次のような便利なメソッドとクラスを作成することもできます。
/** Class to simplify display of alerts. */
public class MyAlert {
public static void alert(Context context, String title, String message, OnClickListener listener)
{
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("My Title");
builder.setMessage("My message");
builder.setPositiveButton("OK", listener);
AlertDialog dialog = builder.show();
// Must call show() prior to fetching views
TextView messageView = (TextView)dialog.findViewById(android.R.id.message);
messageView.setGravity(Gravity.RIGHT);
TextView titleView = (TextView)dialog.findViewById(context.getResources().getIdentifier("alertTitle", "id", "android"));
if (titleView != null) {
titleView.setGravity(Gravity.RIGHT);
}
}
}
もちろん、右またはデフォルトの左の代わりに、中央揃えのために重力を CENTER に変更することもできます。
これに1時間苦労した後(上記の解決策は私にはうまくいきませんでした)、重力とレイアウトのパラメータを変更するだけで、スタイルをオーバーライドせずにAlertDialogのタイトルとメッセージを右に揃えることができました.
DialogFragment で:
@Override
public void onStart() {
super.onStart();
// Set title and message
try {
alignDialogRTL(getDialog(), this);
}
catch (Exception exc) {
// Do nothing
}
}
実際の機能:
public static void alignDialogRTL(Dialog dialog, Context context) {
// Get message text view
TextView message = (TextView)dialog.findViewById(android.R.id.message);
// Defy gravity
message.setGravity(Gravity.RIGHT);
// Get title text view
TextView title = (TextView)dialog.findViewById(context.getResources().getIdentifier("alertTitle", "id", "android"));
// Defy gravity (again)
title.setGravity(Gravity.RIGHT);
// Get title's parent layout
LinearLayout parent = ((LinearLayout)Title.getParent());
// Get layout params
LinearLayout.LayoutParams originalParams = (LinearLayout.LayoutParams)parent.getLayoutParams();
// Set width to WRAP_CONTENT
originalParams.width = LinearLayout.LayoutParams.WRAP_CONTENT;
// Defy gravity (last time)
originalParams.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL;
// Set updated layout params
parent.setLayoutParams(originalParams);
}