【问题标题】:android : how to align message in alertDialog?android:如何在 alertDialog 中对齐消息?
【发布时间】:2021-01-31 14:09:32
【问题描述】:

我必须在 android alertdialog 中按中间对齐文本。 但我找不到路... 有人知道怎么做吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    试试这个

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("My Title");
    builder.setMessage("your message");
    builder.setPositiveButton("OK", null);
    AlertDialog dialog = builder.show();
    TextView messageText = (TextView)dialog.findViewById(android.R.id.message);
    messageText.setGravity(Gravity.CENTER);
    dialog.show();
    

    【讨论】:

    • 可能有 AlertDialog dialog = builder.create();而不是 AlertDialog dialog = builder.show();和 dialog.show();应该在上面移动 2 行
    【解决方案2】:

    我知道这个帖子很旧,但可能会对某些人有所帮助:D

    TextView title = new TextView(this);
    title.setText("Client details not saved!");
    title.setPadding(10, 10, 10, 10);
    title.setGravity(Gravity.CENTER);
    // title.setTextColor(getResources().getColor(R.color.greenBG));
    title.setTextSize(23);
    
    TextView msg = new TextView(this);
    msg.setText("You're going to lose all the information if you continue!");
    msg.setPadding(10, 10, 10, 10);
    msg.setGravity(Gravity.CENTER);
    msg.setTextSize(18);
    
    DialogInterface.OnClickListener onClick = new DialogInterface.OnClickListener() {
    
        public void onClick(DialogInterface dialog, int which) {
            if (which == DialogInterface.BUTTON_POSITIVE) {
                finish();
            }
        }
    
    };
    
    Builder builder = new AlertDialog.Builder(this);
    builder.setCustomTitle(title);
    builder.setView(msg);
    builder.setCancelable(true);
    builder.setPositiveButton("Yes", onClick);
    builder.setNegativeButton("No", onClick);
    
    AlertDialog dialog = builder.create();
    dialog.show();
    

    【讨论】:

    • 请您写下您的代码有何帮助以及与其他答案的不同之处。它将帮助人们阅读您的答案并确定是否尝试(并可能帮助他们学习)
    • 如何在builder中也添加title TextView?
    【解决方案3】:

    最好的办法是设计自定义对话框。

    view_dialog_box.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:background="#A9E2F3">
    
    <TextView
        android:id="@+id/txtDiaTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Connection Alart"
        android:textColor="@color/Black"
        android:textStyle="bold"
        android:gravity="center"
        android:padding="5dp"
        android:textAppearance="?android:attr/textAppearanceMedium" />
    
    <View
        android:layout_width="match_parent"
        android:layout_height="1dip"
        android:background="#2E9AFE"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        />
    
    <TextView
        android:id="@+id/txtDiaMsg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="5dp"
        android:text="No Internet Connection"
        android:textColor="@color/Black" />
    
    <Button
        android:id="@+id/btnOk"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="OK"
        android:textColor="@color/Black"
        android:textStyle="bold"
        android:padding="5dp" 
        android:layout_margin="5dp"
        android:background="@color/White"/>
    

    然后在java文件中使用

    final Dialog dialog = new Dialog(context);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
        dialog.setContentView(R.layout.view_dialog_box);
    
        // set the custom dialog components - text and button
        TextView text = (TextView) dialog.findViewById(R.id.txtDiaTitle);
        TextView image = (TextView) dialog.findViewById(R.id.txtDiaMsg);
    
        Button dialogButton = (Button) dialog.findViewById(R.id.btnOk);
        // if button is clicked, close the custom dialog
        dialogButton.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                dialog.dismiss();
    
            }
        }); 
        dialog.show();
    

    【讨论】:

      【解决方案4】:

      只需使用该方法,您的dialog titlemessage 就会出现在中心:

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

      【讨论】:

        【解决方案5】:

        您可以将自定义布局用于警报对话框布局。要对齐默认警报对话框布局消息中心,您可以这样做

                AlertDialog alertDialog;
                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setMessage("hello world");
                alertDialog = builder.show();
                TextView messageText = (TextView) alertDialog.findViewById(android.R.id.message);
                messageText.setGravity(Gravity.CENTER);
        

        请注意,如果在调用builder.show() 之前将messageText 设置为findViewById,您将得到null pointer exception

        【讨论】:

          【解决方案6】:

          让您的 TextView 填充父视图并为其赋予中心重心。

          <TextView ... android:layout_width="fill_parent" android:gravity="center" />
          

          【讨论】:

          • 如何用 AlertDialog 做同样的事情?
          【解决方案7】:

          您必须使用为 Android 中的 AlertDialog 提供的构造函数之一,同时创建一个。

          AlertDialog(上下文上下文,int 主题) 构造一个使用显式主题的 AlertDialog。

          这个link 会帮助你。由于您希望文本居中,因此您需要赋予重力属性值“中心”。

          【讨论】:

            【解决方案8】:

            试试这个 - 它会成功的。

            AlertDialog.Builder completeDialog = new AlertDialog.Builder(Main.this);
            
            TextView resultMessage = new TextView(Main.this);
            resultMessage.setTextSize(22);
            resultMessage.setText("Upload completed!");
            resultMessage.setGravity(Gravity.CENTER);
            completeDialog.setView(resultMessage);
            
            completeDialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            
                @SuppressLint("DefaultLocale")
                public void onClick(DialogInterface dialog, int whichButton) {
                    dialog.dismiss();               
                }
            
            });
            
            completeDialog.show();
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-04-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-03-09
              • 1970-01-01
              相关资源
              最近更新 更多