2013-02-14 4 views
13

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

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

Drop down menu

Вот мой 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 позволит мне создать экземпляр пользовательского представления, когда элемент панели действий нажата, но я не могу работать путь - Возможно, я иду по неверному пути.

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

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

+1

я ищу для образца, который вы писали, как изображение здесь, вы можете предоставить мне любой образец пример или намекнуть, как создать пользовательский выпадающий список и динамически добавлять пункты меню там. – Naruto

+1

Пользовательский интерфейс выглядит хорошо. вы заполнили приложение? это для скачивания? – Zen

ответ

11

Хорошо, я сам разработал решение. В основном 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]; 
    } 
} 
+10

Было бы здорово, если бы вы могли предоставить информацию о том, как вы сделали класс Dropdown. Является ли он основанным на каком-то другом виджете или это просто ListView? – jelgh

+0

Как и где вы прикрепляли слушателей onClick для элементов в ActionProvider? – lschlessinger