在android中popup窗口大小

我在事件onListItemClick中创build一个列表活动的popup窗口。

LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View pop = inflater.inflate(R.layout.popupcontact, null, false); ImageView atnot = (ImageView)pop.findViewById(R.id.aNot); height = pop.getMeasuredHeight(); width = pop.getMeasuredWidth(); Log.e("pw","height: "+String.valueOf(height)+", width: "+String.valueOf(width)); atnot.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { pw.dismiss(); } }); pw = new PopupWindow(pop, width, height, true); // The code below assumes that the root container has an id called 'main' //pw.showAtLocation(v, Gravity.CENTER, 0, 0); pw.showAsDropDown(v, 10, 5); 

现在,高度和宽度variables应该是用于popup窗口(popupcontact)的布局的高度和宽度。 但他们返回0.我想这是因为布局还没有呈现。 有没有人有线索,我怎样才能控制popup窗口的大小,而不需要使用绝对像素数字?

Solutions Collecting From Web of "在android中popup窗口大小"

我不认为你的代码将工作,因为你正在试图获得是你的popup窗口的子视图的宽度和高度。

既然你将popupwindow锚定到“v”视图,那么可以根据锚视图(或基于它们的比率)来设置宽度和高度?

我有一个类似的问题。 我通过呼吁解决它:

 pop.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 

在使用getMeasuredHeight()和getMeasuredWidth()获得布局的大小之前

如果你想创build一个popup窗口,请查看创build对话框 。 如果你想在你的对话框中使用一个完整的自己的View,看看这个问题,确保阅读接受的答案的评论。 我认为没有必要使用PopupWindow来创build这个视图,而对话框会让你更容易。

如果你想坚持使用PopupWindow,并且不想改变窗口的宽度和高度,只需使用PopupWindow的另一个构造函数 ,就可以得到一些不需要高度和宽度的可用构造函数 。 他们没有采取布尔值的能力来聚焦窗口,但似乎你可以通过setFocusable()稍后改变它。