Показывать всплывающее меню при нажатии на элемент панели действий
Как добавить всплывающее меню при нажатии на элемент панели действий (см. Скриншот)? Я хочу, чтобы пункт меню показывал значок.
Вещи, которые я пробовал:
Настройка actionProvider (поддержка lib v7) для элемента панели действий. В actionProvider вернуть null для onCreateActionView. В onPrepareSubMenu заполните подменю. Это работает на Android 2.x, но не на Android 4.0, а для Android 2.x значок отсутствует.
В actionProvider, создайте вид изображения и, нажав, показывает PopupMenu, но всплывающее меню не имеет иконки, когда я специально использовал setIcon, чтобы показать его.
Я не понимаю, почему PopupMenu не показывает значок. Я следовал "официальному" коду как можно ближе, но безрезультатно.
Пожалуйста помоги! Спасибо!
3 ответа
Используйте popUpMenu ->>> Follow>
Рез / меню / horario.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_MudaDia"
android:titleCondensed="Mudar Dia"
android:title="Mudar Dia"
android:icon="@drawable/ic_menu_popup"
android:showAsAction="always">
</item>
activity.class
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.horario, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_MudaDia:
View vItem = getActivity().findViewById(R.id.menu_MudaDia);
PopupMenu popMenu = new PopupMenu(getActivity(), vItem);
for (int i = 0; i < diaSemana.length; i++)
{
popMenu.getMenu().add(0, i, i, diaSemana[i]);
}
popMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
DIA = diaSemana[item.getItemId()];
atualizaGUI();
return true;
}
});
popMenu.show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
Я использую библиотеку поддержки v7 и работает хорошо.
- используйте ActionProvider
Я использую пользовательский ActionProvider, и он хорошо работает в 2.x и 4.x, код в onPrepareSubMenu
subMenu.clear();
// labels contain list item text.
int len = labels.length;
for(int i = 0; i < len; i++) {
subMenu.add(0, labels[i], i, labels[i])
.setIcon(icons[i])
.setOnMenuItemClickListener(new MineMenuItemClickListener());
}
super.onPrepareSubMenu(subMenu);
- о PopupMenu
PopupMenu не показывает значок по умолчанию, но вы можете создать свой собственный PopupMenu и настроить отображение значков.
Как этот человек делает CustomPopupMenu
Единственное изменение это добавить mPopup.setForceShowIcon(true);
Вы можете попробовать создать макет с помощью ImageView и TextView. Надуйте этот макет внутри PopUpWindow (см.: http://developer.android.com/reference/android/widget/PopupWindow.html).
Используйте метод showAsDropDown(View actionBarIcon), чтобы отобразить меню на щелчке значка на панели действий.