【问题标题】:Center message in android dialog boxandroid对话框中的中心消息
【发布时间】:2021-07-16 15:55:35
【问题描述】:

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

【问题讨论】:

    标签: java android


    【解决方案1】:

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

    例如

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

    【讨论】:

    • 很棒的把戏。但它不适用于 AlertDialog 的“标题”!
    • 我没有测试过,但我相信你可以通过 android.R.id.title 为 Title 做类似的事情。不过,这对消息很有用。
    • 你觉得这个性能更好吗?我知道这是不可能从用户那里得到的,只是好奇。
    • 对于那些结果为 null 的人。仔细阅读答案。 在获取文本视图之前必须调用 show()
    • 如果有人遇到此问题,请注意,要更改正、负和中性按钮的文本样式,ID 分别为 button1button2button3
    【解决方案2】:

    创建您自己的 TextView 对象,然后将其作为 View 提供给弹出构建器:

    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 放入其中。

    【讨论】:

    • 如果我想添加按钮或任何其他默认组件以获得对话框的默认外观,我需要自己完成。我更喜欢大通的回答。
    • 我不得不承认我也更喜欢大通的回答。这是我想到的第一个方法,我想尽快回答。
    【解决方案3】:

    根据 Chase 的回答,这里是如何使标题居中的方法。我认为这是最简单的方法。为什么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);
    }
    

    【讨论】:

      【解决方案4】:

      我们可以照样使用。

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

      【讨论】:

        【解决方案5】:

        你可以试试这个代码

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

        【讨论】:

        • 在您的代码上方发布说明,以便其他人可以了解您的操作
        • 在您的代码上方发布说明,以便其他人可以理解您的操作。
        • 他正在设置android:gravity="center"
        【解决方案6】:

        不使用文本视图。 为我工作。

        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)
        

        【讨论】:

          【解决方案7】:

          在你的 TextView 中试试这个:

          android:gravity = "center_vertical|center"
          

          【讨论】:

            【解决方案8】:

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

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

            【讨论】:

              最近更新 更多