Отображение раскрывающегося списка панели действий Android на элемент click

Я пишу приложение для Android для планшетов. Я пошел с панелью действий, чтобы создать свои значки. Тем не менее, мне нужно открыть пользовательский вид, когда щелкнут один из пунктов меню.

Я не хочу настраивать панель действий – мне нужно раздувать пользовательский вид, когда нажимается элемент панели «Обзор объектов». Это представление должно появиться как выпадающее меню, но использовать мой собственный макет, поскольку он не будет использоваться для навигации.

Выпадающее меню

Вот мой menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_browse" android:title="Browse Subjects" android:showAsAction="always" android:actionLayout="@layout/action_layout_browse" android:actionProviderClass="au.com.pearson.f12catalogue.action_providers.BrowseProvider" /> <item android:id="@+id/menu_settings" android:title="Settings" android:orderInCategory="100" android:showAsAction="never" /> </menu> 

Я предположил, что ActionProviderClass позволит мне создать экземпляр пользовательского представления, когда элемент элемента действия будет нажат, но я не могу найти способ – возможно, я иду по неверному пути.

Любая помощь по этому поводу была бы очень оценена! Благодаря!

UPDATE: Спасибо за ссылки на стиль панели действий, но я не хочу просто создавать раскрывающийся список. Я хочу раздуть пользовательский вид. В представлении также будут выполняться запросы БД и т. Д.

Solutions Collecting From Web of "Отображение раскрывающегося списка панели действий Android на элемент click"

Хорошо, я сам разработал решение. В основном actionProviderClass используется для создания экземпляра actionView в actionBar. В этом классе вы можете прикрепить слушателя onClick к виду, которое вы надуваете. Я использовал этот прослушиватель для раздувания раскрывающегося списка в главном кадре при нажатии.

Например

 public class BaseProvider extends ActionProvider { protected final Context context; protected final int layout; protected final BaseProvider self; protected View view; protected int positionLeft = 0; protected Dropdown dropdown; public BaseProvider(Context context, int layout, Dropdown dropdown) { super(context); this.layout = layout; this.context = context; this.self = this; this.dropdown = dropdown; } @Override public View onCreateActionView() { LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); View view = inflater.inflate(this.layout, null); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { self.onItemClick(); } }); this.view = view; return view; } public boolean onItemClick(){ toggleDropdown(); return true; } protected void toggleDropdown(){ this.positionLeft = getRelativeLeft(view); DropdownInflater.getInstance().toggleDropdown(this.dropdown,this.positionLeft); } protected int getRelativeLeft(View view) { int[] loc = new int[2]; view.getLocationOnScreen(loc); return loc[0]; } }