Nachricht im Android-Dialogfeld zentrieren

68

Ich möchte, dass der Nachrichtentext in meinem Dialogfeld mittig ausgerichtet ist.

Siva K.
quelle

Antworten:

79

Erstellen Sie Ihr eigenes TextView-Objekt und geben Sie es als Ansicht an den Popup-Builder weiter:

AlertDialog.Builder popupBuilder = new AlertDialog.Builder(this);
TextView myMsg = new TextView(this);
myMsg.setText("Central");
myMsg.setGravity(Gravity.CENTER_HORIZONTAL);
popupBuilder.setView(myMsg);

Sie können alle anderen Textparameter (Stil, Farbe, Größe ...) steuern. Um die Ränder zu steuern, können Sie LinearLayout programmgesteuert erstellen, LayoutParams festlegen und dann TextView einfügen.

Zelimir
quelle
1
Wenn ich Schaltflächen oder andere Standardkomponenten hinzufügen möchte, um das Standard-Erscheinungsbild des Dialogfelds zu erhalten, muss ich dies selbst tun. Ich mochte mehr Chase Antwort.
Alex Kapustian
Ich muss zugeben, dass mir auch die Antwort von Chase besser gefällt. Dies war der erste Ansatz, der mir in den Sinn kam, und ich wollte ihn schnell beantworten.
Zelimir
163

Natürlich können Sie jederzeit die Schwerkraft der Originaltextansicht einstellen. So müssen Sie sich keine Gedanken über Formatierung und Auffüllen machen.

Zum Beispiel

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title");
builder.setMessage("Message");
builder.setPositiveButton("OK", null);
AlertDialog dialog = builder.show();

// Must call show() prior to fetching text view
TextView messageView = (TextView)dialog.findViewById(android.R.id.message);
messageView.setGravity(Gravity.CENTER);
Verfolgungsjagd
quelle
1
Genialer Trick. Aber es funktioniert nicht für 'Titel' von AlertDialog!
Gaurav Arora
Ich habe nicht getestet, aber ich bin sicher, dass Sie mit android.R.id.title etwas Ähnliches für den Titel tun können. Dies funktioniert jedoch hervorragend für die Nachricht.
Joss Stuart
Denken Sie, dass dies eine bessere Leistung hat? Ich weiß, dass es unmöglich ist, dies vom Benutzer zu bekommen, nur neugierig.
Enrichman
5
Für diejenigen, die dadurch null bekommen. Lesen Sie die Antwort sorgfältig durch. Muss show () aufrufen, bevor die Textansicht abgerufen wird
Dominic
1
Nur ein wenig FYI , wenn jemand über diese kommen, um den Textstil von Positiv, Negativ und neutrale Tasten ändern sich die IDs sind button1, button2und button3jeweils
IronBlossom
11

Aufbauend auf Chases Antwort können Sie hier auch den Titel zentrieren. Ich denke, das ist der einfachste Weg. Warum Android nicht standardmäßig zentriert oder zu einem einfachen Konstruktorparameter macht, ist mir ein Rätsel.

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.CENTER);

TextView titleView = (TextView)dialog.findViewById(context.getResources().getIdentifier("alertTitle", "id", "android"));
if (titleView != null) {
    titleView.setGravity(Gravity.CENTER);
}
n8tr
quelle
6

wir können wie verwenden.

public static void showAlert(Activity activity, String message) {
  TextView title = new TextView(activity);

  title.setText("Your Title Here");
  title.setPadding(10, 10, 10, 10);
  title.setGravity(Gravity.CENTER);
  title.setTextColor(Color.WHITE);
  title.setTextSize(20);

  AlertDialog.Builder builder = new AlertDialog.Builder(activity);
  builder.setCustomTitle(title);
  builder.setMessage(message);
  builder.setCancelable(false);
  builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
      dialog.cancel();
    }
  });

  AlertDialog alert = builder.show();
  TextView messageText = (TextView)alert.findViewById(android.R.id.message);
  messageText.setGravity(Gravity.CENTER);
  messageText.setTextColor(Color.RED);
}
Sunil Kumar
quelle
3

Sie können diesen Code ausprobieren

public void Info(){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Info Aplication");
    builder.setIcon(R.drawable.info_adp);
    builder.setMessage("Jakarta Hospital");
    builder.setCancelable(false);
    builder.setPositiveButton("Exit", null);
    AlertDialog dialog = builder.show();
    TextView messageView = (TextView)dialog.findViewByI(android.R.id.message);
    messageView.setGravity(Gravity.CENTER);
}
Angga Dwi Prasetya
quelle
1
Veröffentlichen Sie eine Beschreibung über Ihrem Code, damit andere verstehen können, was Sie getan haben
Juan Cruz Soler
Veröffentlichen Sie eine Beschreibung über Ihrem Code, damit andere verstehen können, was Sie getan haben.
Sebastian Palma
3

ohne Textansicht. arbeitete für mich.

styles.xml

<style name="CustomAlertDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="android:gravity">center</item>
    </style>

Alertdialog

final AlertDialog builder = new AlertDialog.Builder(activity, 
R.style.CustomAlertDialog)
Ryan Christoper Lucasan
quelle
2

Versuchen Sie dies in Ihrer Textansicht:

android:gravity = "center_vertical|center"
Jennifer
quelle
2

Verwenden Sie einfach diese Methode und Ihr Dialogtitel und Ihre Nachricht werden in der Mitte angezeigt:

public static void openDialog (Kontextkontext, String-Nachricht) {

    TextView title = new TextView(context);
    // You Can Customise your Title here
    title.setText("Information Message");
    title.setBackgroundColor(Color.BLACK);
    title.setPadding(10, 15, 15, 10);
    title.setGravity(Gravity.CENTER);
    title.setTextColor(Color.WHITE);
    title.setTextSize(22);

    AlertDialog alertDialog = new AlertDialog.Builder(context).create();
    alertDialog.setCustomTitle(title);
    alertDialog.setMessage(message);

    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {

        }
    });
    alertDialog.show();

    // You Can Customise your Message here
    TextView messageView = (TextView) alertDialog
            .findViewById(android.R.id.message);
    messageView.setGravity(Gravity.CENTER);

}
Sudhir Spieleentwickler
quelle