无法在Android中设置自定义对话框的宽度。

3
我是一个正在开发Android应用的开发者。在我的应用中,我试图展示一个带有自定义视图的警告对话框。设置自定义视图很简单,但是我在设置对话框宽度时遇到了问题,我无法设置宽度,它总是默认的宽度。
这是我展示对话框的方法:
AlertDialog.Builder builder = new AlertDialog.Builder(context);
            View view = layoutInflater.inflate(R.layout.meme_post_actions_dialog,null);
            builder.setView(view);
            builder.create().show();

这是XML布局。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="center"
    android:orientation="vertical" android:layout_width="100dp"
    android:layout_height="match_parent">
    <TextView
        android:text="This is dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

从代码中可以看到我将宽度设置为100dp。所以它的宽度会很小,但这就是我得到的结果。

输入图像描述

如何设置自定义警告框的宽度?


嗨,@ Wai Yan Hein,请尝试此链接,希望可以帮到你。https://dev59.com/5Wcs5IYBdhLWcg3w7II9 - Dileep Patel
2个回答

3

有多种方法可以控制它。让我与您分享一种方法,即通过设置警报窗口的宽度和高度。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
View view = layoutInflater.inflate(R.layout.meme_post_actions_dialog,null);
        builder.setView(view);
builder.setView(layout);
alertDialog = builder.create();
alertDialog.show();
alertDialog.getWindow().setLayout(600, 400); //<--Controlling width and height.

在最后,确保你的布局的父级与父级匹配。
android:layout_width="match_parent"
android:layout_height="match_parent"

但是如何设置wrap_content? - Wai Yan Hein
我是指alertDialog.getWindow().setLayout(600, WRAP_CONTENT); - Wai Yan Hein
我该如何获取它? - Wai Yan Hein
这不是一个好的解决方案。如果移动屏幕非常小,怎么办...我们不应该给定固定的高度和宽度..根据@Ahmad Aghazadeh的答案,我们应该先计算屏幕。根据屏幕大小,我们可以制作对话框。 - Däñish Shärmà
LayoutParams.WRAP_CONTENT - Bhavdip Sagar
@DäñishShärmà,正如我之前提到的,有多种方法。 - Bhavdip Sagar

2
尝试这个:

试试看:

AlertDialog.Builder builder = new AlertDialog.Builder(context);
            View view = layoutInflater.inflate(R.layout.meme_post_actions_dialog,null);
            builder.setView(view);
int width = (int)(getResources().getDisplayMetrics().widthPixels*0.50); //<-- int width=400;
int height = (int)(getResources().getDisplayMetrics().heightPixels*0.50);//<-- int height =300;
AlertDialog alertDialog = builder.create();
alertDialog.getWindow().setLayout(width, height);

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