Center message in android dialog box

JavaAndroid

Java Problem Overview


I want the message text within my dialog box to be center aligned.

Java Solutions


Solution 1 - Java

Of course, you can always set the gravity of the original text view. This allows you to not have to worry about formatting and padding.

For example

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

Solution 2 - Java

Create your own TextView object and then supply it to popup builder as View:

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

You can control all other text parameters (style, color, size ...). To control margins you may programatically create LinearLayout, set LayoutParams, and then put TextView into it.

Solution 3 - Java

Building off of Chase's answer, here's how to also center the title. I think this is the easiest way. Why android doesn't center by default or make it a simple constructor param is beyond me.

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);
}

Solution 4 - Java

we can use as like.

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);
}
	

Solution 5 - Java

you can try this code

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.findViewById(android.R.id.message);
    messageView.setGravity(Gravity.CENTER);
}

Solution 6 - Java

without using textview. worked for me.

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)

Solution 7 - Java

try this in your TextView:

android:gravity = "center_vertical|center"

Solution 8 - Java

Just use that method and your dialog title and message will appear at center:

public static void openDialog(Context context, String message) {

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

}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSiva KView Question on Stackoverflow
Solution 1 - JavaChaseView Answer on Stackoverflow
Solution 2 - JavaZelimirView Answer on Stackoverflow
Solution 3 - Javan8trView Answer on Stackoverflow
Solution 4 - JavaSunil KumarView Answer on Stackoverflow
Solution 5 - JavaAngga Dwi PrasetyaView Answer on Stackoverflow
Solution 6 - Javaryan christoper lucasanView Answer on Stackoverflow
Solution 7 - JavajenniferView Answer on Stackoverflow
Solution 8 - JavaSudhir Game DeveloperView Answer on Stackoverflow