Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android上获取AlertDialog的高度_Android_Android Alertdialog - Fatal编程技术网

如何在Android上获取AlertDialog的高度

如何在Android上获取AlertDialog的高度,android,android-alertdialog,Android,Android Alertdialog,我使用以下代码显示一个对话框: private AlertDialog MyDialog; public void adddialog() { AlertDialog.Builder MyBuilder = new AlertDialog.Builder(this); MyBuilder.setTitle("Title") MyBuilder .setView(ListView); MyDialog = MyBuilder.create(); } ListVie

我使用以下代码显示一个对话框:

private AlertDialog MyDialog;
public void adddialog() {
    AlertDialog.Builder MyBuilder = new AlertDialog.Builder(this);
    MyBuilder.setTitle("Title")
    MyBuilder .setView(ListView);
    MyDialog = MyBuilder.create();
}
ListView可能会取消固定行。
但是我想得到MyDialog的高度。

我怎样才能得到它

您可以使用listView对象的getHeight(),而不是获取对话框的高度。

为了获取listView的可见高度,您需要获取列表中一行的高度,并乘以元素数(当前可见)

像这样的

        Adapter ListAdapter = listview.getAdapter();
        View mView  = ListAdapter.getView(0, null, listview);
        mView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        int requiredHeight = listview.getChildCount() * mView.getMeasuredHeight();

我检查了高度,它表示视图希望达到的高度。。 也许你可以这样试试: 您可以通过以下方式获得高度:

     int height = MyDialog.getWindow().getDecorView().getHeight();
此外,您还可以使用以下选项设置高度:

     MyDialog.getWindow().setLayout(width, height);

注意:所有方法都应该在
MyDialog.show()之后调用

但它不包含对话框的标题和填充。使用活动作为对话框,则您的高度和宽度与设备屏幕相同…我将此添加到MyDialog.show()之后。但是我使用这个方法,得到的高度=-2。试试这个:MyDialog.getWindow().getDecorView().getHeight();