android对话框中的中心消息


68

我希望对话框中的消息文本居中对齐。

Answers:


79

创建您自己的TextView对象,然后将其作为“视图”提供给弹出生成器:

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

您可以控制所有其他文本参数(样式,颜色,大小...)。要控制边距,您可以以编程方式创建LinearLayout,设置LayoutParams,然后将TextView放入其中。


1
如果我想添加按钮或任何其他默认组件以获取对话框的默认外观,则需要我自己做。我喜欢更多蔡斯的答案。
Alex Kapustian 2012年

我不得不承认,我也更喜欢蔡斯的回答。这是我想到的第一种方法,我想迅速回答。
Zelimir

163

当然,您始终可以设置原始文本视图的重力。这使您不必担心格式和填充。

例如

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

1
很棒的把戏。但这不适用于AlertDialog的“标题”!
Gaurav Arora

我尚未测试,但是我敢肯定,您可以通过执行android.R.id.title为Title做类似的事情。但是,这对于消息非常有用。
Joss Stuart

您认为这有更好的表现吗?我知道这不可能从用户那里得到,只是出于好奇。
Enrichman

5
对于那些结果为null的人。仔细阅读答案。必须先调用show()才能获取文本视图
Dominic 2014年

1
只是一个小仅供参考,如果有人碰到过这个,要改变阳性,阴性和中性按钮的ID是的文本样式button1button2button3分别
IronBlossom

11

以大通的答案为基础,以下是将标题居中的方法。我认为这是最简单的方法。为什么android在默认情况下不会居中或使其成为简单的构造函数参数,这超出了我的范围。

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

6

我们可以像这样使用。

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

3

你可以试试这个代码

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

1
在您的代码上方发布说明,以便其他人可以了解您的工作
Juan Cruz Soler

在代码上方发布说明,以便其他人可以了解您的操作。
塞巴斯蒂安·帕尔玛

3

不使用textview。为我工作。

styles.xml

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

警报对话框

final AlertDialog builder = new AlertDialog.Builder(activity, 
R.style.CustomAlertDialog)

2

在您的TextView中尝试以下操作:

android:gravity = "center_vertical|center"

2

只需使用该方法,对话框标题和消息将出现在中心:

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

}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.