2015-11-20 3 views
0

Известно, что PopupMenu довольно непроницаем для настройки, поэтому я переключаю один из своих PopupMenus на ListWindowMenu. Последний позволяет использовать собственный адаптер и макеты.Каковы размеры виджета PopupMenu, определенные Android?

Моя проблема в том, что мне нужно воссоздать размер PopupMenu, но я не уверен, как его получить. Определенного макета нет, и, похоже, он как-то сам размер. Я просмотрел PopupMenu и Menu, но я не мог найти, как они оценивают себя и как я могу получить размеры.

Кто-нибудь знает 1) Как получить размеры popupmenu 2) Как эти размеры виджеты android видны?

ответ

2

PopupMenu на низком уровне фактически есть ListPopupWindow, содержащий DropDownListView.

DropDownListView является ребенком ListView, поэтому у него есть Адаптер.

Как вы знаете, у каждого адаптера есть метод 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() widthPixels/2, res.getDimensionPixelSize (com.android.internal.R.dimen.config_prefDialogWidth));

Измерение логики вы можете увидеть here.

+0

Отличный ответ, если бы я мог сделать это дважды. –

Смежные вопросы