Android:如何设置AlertDialog的宽度和高度,以及AlertDialog风格的按钮?

Posted

技术标签:

【中文标题】Android:如何设置AlertDialog的宽度和高度,以及AlertDialog风格的按钮?【英文标题】:Android:How can I set the AlertDialog width and height,and the button of the AlertDialog style? 【发布时间】:2012-08-05 02:13:33 【问题描述】:

我的任务是通过 xml 更改 AlertDialog 的宽度和高度,我想让它变成样式,这样我就可以轻松使用它。而且,我还需要更改 AlertDialog 样式的按钮。你能告诉我一个方法吗达到目标。谢谢 非常感谢。 PS,我最好通过更改xml来实现目标。

【问题讨论】:

你可以有这样的东西***.com/questions/1979369/… @userIsAMonkey,非常感谢,我曾想过将Activity用作对话框,但使用对话框很适合我的任务。因为有很多对话框等待显示。我们希望有一种易于显示的样式。谢谢。 【参考方案1】:

有两种方法 1) 以编程方式 2) 通过使用 xml 布局

1)=======>

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
builder.setTitle("Title");
alertDialog = builder.create();
alertDialog.show();
alertDialog.getWindow().setLayout(600, 400); //Controlling width and height.


                         ( or )

alertDialog.show();
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();

lp.copyFrom(alertDialog.getWindow().getAttributes());
lp.width = 150;
lp.height = 500;
lp.x=-170;
lp.y=100;
alertDialog.getWindow().setAttributes(lp);

如果要显示要显示的布局,如Alert dialog,请参阅this

2)========>

选择.xml

<TextView
    android:id="@+id/img"
    android:layout_
    android:text="@string/choose"
    android:textSize="25dp"
    android:textColor="#fff"
    android:layout_/>

<TableLayout android:id="@+id/table"
    android:layout_
    android:layout_
    android:background="#fff"
    android:orientation="vertical">

    <TableRow
        android:id="@+id/tr1" 
        android:orientation="horizontal"
        android:layout_margin="10dp">
        <ImageView 
            android:contentDescription="@string/phone"
            android:src="@drawable/phone"
            android:layout_
            android:layout_/>
        <TextView
            android:id="@+id/phnText"
            android:layout_
            android:text="@string/phone"
            android:gravity="left|center_vertical"
            android:layout_marginLeft="10dp"
            android:textSize="25dp"
            android:textColor="#000"
            android:layout_/>
    </TableRow>
    <View
            android:layout_
            android:layout_
            android:background="#FF000000" />

    <TableRow
        android:id="@+id/tr2" 
        android:orientation="horizontal"
        android:layout_margin="10dp">
        <ImageView 
            android:contentDescription="@string/sms"
            android:src="@drawable/sms"
            android:layout_
            android:layout_/>
        <TextView
            android:id="@+id/smsText"
            android:layout_
            android:text="@string/sms"
            android:gravity="left|center_vertical"
            android:layout_marginLeft="10dp"
            android:textSize="25dp"
            android:textColor="#000"
            android:layout_/>
    </TableRow>

</TableLayout>
</LinearLayout>

将其显示为弹出窗口,如下所示

 private void showPopUp()

    final AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this);
    helpBuilder.setTitle("");

    LayoutInflater inflater = getLayoutInflater();
    final View checkboxLayout = inflater.inflate(R.layout.choose, null);
    helpBuilder.setView(checkboxLayout);

    final AlertDialog helpDialog = helpBuilder.create();
    helpDialog.show();

    TableRow tablerowPhone  =    (TableRow)checkboxLayout.findViewById(R.id.tr1);
    TableRow tablerowSms    =    (TableRow)checkboxLayout.findViewById(R.id.tr2);

    tablerowPhone.setOnClickListener(new OnClickListener() 

        public void onClick(View v) 

            helpDialog.dismiss();

            Uri callUri = Uri.parse("tel:" + listview_array[4]);  
            Intent intent = new Intent(Intent.ACTION_CALL, callUri); 
            startActivity(intent);
        
    );

    tablerowSms.setOnClickListener(new OnClickListener() 

        public void onClick(View v) 

            helpDialog.dismiss();

            Uri smsUri = Uri.parse("sms:" + listview_array[4]);  
            Intent intent = new Intent(Intent.ACTION_VIEW, smsUri); 
            startActivity(intent);
        
    );

在你想要的地方调用这个showPopUp() 方法。这样您就可以在 xml 文件中为布局设置高度和宽度

【讨论】:

非常感谢。这种方式可以做到,但我想通过xml文件来做到这一点。因为我想将xml配置到我的应用程序中。你有没有办法通过xml文件来做到这一点?再次感谢您。

以上是关于Android:如何设置AlertDialog的宽度和高度,以及AlertDialog风格的按钮?的主要内容,如果未能解决你的问题,请参考以下文章

怎么设置自定义dialog的宽 高居中显示

Android:如何设置AlertDialog的宽度和高度,以及AlertDialog风格的按钮?

如何关闭自定义AlertDialog-Android开发问答

android alertDialog如何改变其样式,就是可以修改其背景,让背景为其他的颜色或背景图

Android学习——AlertDialog

Android AlertDialog