如何在警告对话框生成器中居中文本?

9

我正在尝试将一些文本居中显示在默认的警告对话框生成器中。以下是我的代码,但它默认为左对齐。

            new AlertDialog.Builder(getActivity())
                    .setTitle("Well done!")
                    .setMessage("Message centered????")

                    .setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {

                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // TODO Auto-generated method stub

                                }
                            })

                    .setIcon(R.drawable.img_ok)
                    .show();

        }

我发现自定义 AlertDialog 很困难。最终,我创建了一个自定义的 Dialog,里面包含了一个完全按照我想要的布局的 View - codeMagic
我认为你可以在这里找到答案:https://dev59.com/lG445IYBdhLWcg3wQoEj 希望能对你有所帮助! - koni
@koni 是的,我看到了那个链接,回答得很快。 - Violin Nz
5个回答

15

这段代码默认情况下执行所需的功能,而不需要提供自定义视图给 AlertDialog.Builder

  AlertDialog dialog = builder.show(); //builder is your just created builder
    TextView messageText = (TextView)dialog.findViewById(android.R.id.message);
    messageText.setGravity(Gravity.CENTER);
    dialog.show();

1
setView缺失,应在dialog.show()之前包含dialod.setView(messageText);。 - iversoncru
请注意,如果在执行“.setGravity()”之前没有执行“dialog.show()”,则该解决方案将无法正常工作,否则您将会收到一个NulPtr运行时异常。 - Oke Uwechue

6

不要设置消息,而是使用具有居中文本的 ViewAlertDialog.Builder.setView(View)


1
你可以尝试这段代码。
public void Info(){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Info Aplikasi");
    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);
}

0

对于材料警报对话框,应该是这样的:

MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this, com.google.android.material.R.style.ThemeOverlay_Material3_MaterialAlertDialog_Centered)
    .setTitle("Titulo")
    .setIcon(R.drawable.people)
    .setMessage("un mensaje cualquiera");
AlertDialog dialog = builder.show();    
((TextView) dialog.findViewById(android.R.id.message)).setGravity(Gravity.CENTER);

0
你可以尝试这个简单的方法:
textView.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
textView.setGravity(Gravity.CENTER);
alert.setView(textView);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接