弹出窗口的宽度和高度

3

好的,我开始学习如何构建Android应用程序,至少作为一个程序员,在几天内我已经学到了很多东西,我为自己所学到的一切感到自豪。

无论如何,我想在主活动中强制登录 - 这是通过获取SharedPrefernece并检查该信息是否为空,然后获取一个PopupWindow来实现的,该PopupWindow包含“登录”字段和选项。

这个PopupWindow里面有一个Flipper,当选择某些选项时,它可以正常工作。

我遇到了一个问题,就是无法将PopupWindow设置为内容大小(wrap_content),因为当我设置PopupWindow.setAtLocation()时会出问题。

现在,这里是我一直在尝试做的事情 - 如此多次提到:

popup.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
final PopupWindow pw = new PopupWindow(popup,popup.getMeasuredHeight(),popup.getMeasuredWidth(), true);

请注意,弹出窗口是弹出窗口实际布局的充气器,pw是实际的PopupWindow对象。
现在,我想获取弹出窗口的实际大小(这样它就不会在页面上拉伸,而是像普通弹出窗口一样居中显示)。
此外,对于ViewFlipper。我希望在切换页面时更新弹出窗口的大小(因此每个页面应该根据页面大小调整大小),是否有办法使其起作用? 我尝试过pw.update(),但效果并不好。
1个回答

1

你想要测量你将要添加到你的PopupWindow中的实际布局。我刚刚解决了一个类似的问题,即在PopupWindow中放置ListView。诀窍是在你的View中重写onMeasure()方法。每次ViewFlipper改变时重新测量它。

@Override
public void onMeasure(int x, int y)
{
    super.onMeasure(x, y);

    if(x == View.MeasureSpec.UNSPECIFIED && y == View.MeasureSpec.UNSPECIFIED)
    {
        //measure your child views here

        //tell the view it has been measured
        this.setMeasuredDimension(width, height);
    }
}

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