Показать всплывающее меню в элементе "ActionBar"
У меня есть ActionBar
с элементом действия на нем. После нажатия на элемент действия, я хочу показать всплывающее меню.
Я реализовал этот метод, но я хочу привязать его к элементу действия или к ActionBar
, а не к любому представлению из макета. Как получить какой-то вид, чтобы привязать его к MenuItem
?
public boolean onOptionsItemSelected(MenuItem item) {
PopupMenu popupMenu = new PopupMenu(this, ??????); // What view goes here?
popupMenu.inflate(R.menu.counters_overflow);
popupMenu.show();
// ...
return true;
}
Ответы
Ответ 1
Итак, я нашел решение. Когда вы хотите привязать popupmenu к ActionItem в ActionBar, вам нужно найти представление, которое отображает ActionItem.
Простой поиск с помощью findViewById(), где id совпадает с id вашего пункта меню в xml.
ДИСПЛЕЙ ПОПЕРА:
public boolean onOptionsItemSelected(MenuItem item) {
// ...
View menuItemView = findViewById(R.id.menu_overflow); // SAME ID AS MENU ID
PopupMenu popupMenu = new PopupMenu(this, menuItemView);
popupMenu.inflate(R.menu.counters_overflow);
// ...
popupMenu.show();
// ...
return true;
}
МЕНЮ:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
....
<item
android:id="@+id/menu_overflow"
android:icon="@drawable/ic_overflow"
android:showAsAction="ifRoom"
android:title="@string/menu_overflow"/>
....
</menu>
Если элемент меню не отображается (находится в переполнении), он не работает. findViewById возвращает null, поэтому вам нужно проверить эту ситуацию и привязать к другому виду.
Ответ 2
public boolean onOptionsItemSelected(MenuItem item) {
final View addView = getLayoutInflater().inflate(R.layout.add, null);
new AlertDialog.Builder(this).setTitle("Add a Word").setView(addView)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
addWord((TextView) addView.findViewById(R.id.title));
}
}).setNegativeButton("Cancel", null).show();
return (super.onOptionsItemSelected(item));
}
получите полную исходную форму здесь.
http://vimaltuts.com/android-tutorial-for-beginners/android-action-bar-tab-menu-example