2015-11-20 30 views
0

衆所周知,PopupMenu對自定義非常不利,所以我將其中一個PopupMenus切換到ListWindowMenu。後者允許你使用你自己的適配器和佈局。Android的PopupMenu小部件的尺寸是如何確定的?

我的問題是我需要重新創建PopupMenu的大小,但我不知道如何檢索它。沒有定義佈局,它似乎以某種方式確定其規模。我查看了PopupMenu和Menu,但是我無法找到它們的大小以及我如何獲得尺寸。

有誰知道 1)如何獲得一個彈出菜單 2的尺寸)如何在這些Android部件上漿自己?

回答

2

PopupMenu實際上是一個ListPopupWindow,其中包含DropDownListView

DropDownListViewListView的孩子,所以他有一個適配器

如您所知,每個適配器都有getView()方法,哪個虛擬資源顯示每個項目。

所以,你回答是:

height = com.android.internal.R.layout.popup_menu_item_layout * items_count. 
width = dynamically measured value but it can not be bigger than : 

Math.max(res.getDisplayMetrics()像素寬度/ 2,res.getDimensionPixelSize(com.android.internal.R.dimen.config_prefDialogWidth ));

檢測邏輯,你可以看到here

+0

很好的答案,如果可以的話,會讚賞你兩次。 –