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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11856550/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 09:01:40  来源:igfitidea点击:

Android:How can I set the AlertDialog width and height,and the button of the AlertDialog style?

androidlayoutstylesandroid-alertdialog

提问by oldfox3721

I have a task to change the AlertDialog width and height by xml,I want make that become style,so I can use it easy.And that ,I need to change button of AlertDialog style also.Can you tell me a way to achieve the target。Thank you Very grateful。 PS,I'd better achieve the target by change xml。

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

回答by Ram kiran

There are two methods 1) programatically 2) By using xml layout

有两种方法 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);

If you want to show the layout to be displayed like Alert dialogsee this

如果要显示要显示的布局,Alert dialog请参阅此内容

2)========>

choose.xml

选择.xml

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

<TableLayout android:id="@+id/table"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    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_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView
            android:id="@+id/phnText"
            android:layout_width="wrap_content"
            android:text="@string/phone"
            android:gravity="left|center_vertical"
            android:layout_marginLeft="10dp"
            android:textSize="25dp"
            android:textColor="#000"
            android:layout_height="50dp"/>
    </TableRow>
    <View
            android:layout_width="fill_parent"
            android:layout_height="1dip"
            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_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView
            android:id="@+id/smsText"
            android:layout_width="wrap_content"
            android:text="@string/sms"
            android:gravity="left|center_vertical"
            android:layout_marginLeft="10dp"
            android:textSize="25dp"
            android:textColor="#000"
            android:layout_height="50dp"/>
    </TableRow>

</TableLayout>
</LinearLayout>

display this as popup as like below

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

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

call this showPopUp()method where you want. so that you can set height and width to the layout in xml file

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

回答by Chathura Jayanath

Try this, this works for me,

试试这个,这对我有用,

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