19

AlertDialog のタイトルとメッセージのテキストを右揃えにすることは可能ですか?

ヘブライ語のメッセージを表示していますが、左詰めで表示されています。

4

7 に答える 7

17

これをすばやく簡単に行う方法が必要な場合は、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 に変更することもできます。

于 2013-09-26T11:46:46.890 に答える
3

これに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);
}
于 2014-07-12T09:37:48.380 に答える