2010-06-10 114 views
9

我在事件onListItemClick中的listactivity中創建一個彈出窗口。現在在android中的彈出窗口大小

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

,高度和寬度的變量被認爲是用於彈出窗口(popupcontact)的佈局的高度和寬度。但他們返回0.我想這是因爲佈局還沒有呈現。有沒有人有線索,我怎麼能控制彈出窗口的大小,而不需要使用絕對像素數?

回答

2

我不認爲你的代碼會工作,因爲你正在試圖獲取作爲你的彈出窗口的子視圖的寬度和高度。

由於您將popupwindow錨定到「v」視圖,可能根據錨視圖(或基於它們的比率)設置寬度和高度?

1

如果你想創建一個彈出窗口看看Creating Dialogs。 如果你想在你的對話框中使用一個完整的自己的視圖看看這個question請務必閱讀接受答案的評論。我認爲你不需要自己使用PopupWindow來創建這個視圖,對話框會讓你更容易得到結果。

如果您想堅持使用PopupWindow並且您不想更改窗口的寬度和高度,只需使用另一個constructor即可獲取PopupWindow,但有一些不需要高度和寬度。他們沒有采用布爾型來聚焦窗口,但似乎可以通過setFocusable()稍後進行更改。

43

我有一個類似的問題。與getMeasuredHeight()和getMeasuredWidth(獲得的佈局尺寸)

+2

我也面臨着同樣的問題之前

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

:我解決它通過調用。這是有效的,但給予較小的高度,原來的 – vignesh 2013-04-17 04:27:46

+1

上述代碼給了我一個空指針異常。 – Amrut 2014-03-10 11:32:53