Intereting Posts
Как обращаться с «Нет подключения к Интернету» с помощью Retrofit на Android? Группировать несколько приложений под одним и тем же значком в Application launcher Как su работает на Android? И каковы предпосылки для его работы? Что укореняется на Android? Mock Retrofit Наблюдаемый <T> ответ в тестах Android Unit Каковы случаи, когда я НЕ должен использовать FragmentManager's executePendingTransactions () (в основном потоке)? Проверка программной версии приложения на Android-рынке Проверьте правильность службы Google Play: «К сожалению приложение перестало работать» Синтаксис Android Studio Marks как ошибка, но компиляции градиентов Android и отображение многострочного текста в TextView в TableRow Как использовать классы Android «Surface»? Причин: retrofit.RetrofitError: метод POST должен иметь тело запроса Android: findviewbyid: поиск вида по id, когда представление не находится на том же макете, который вызывается setContentView Можно ли связать человека с twitter и facebook при разборе? Состояние управления зависимостями проекта Android Навигация фрагмента Android для планшетов – однократная или многократная работа?

Отображение раскрывающегося списка панели действий 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]; } }