добавить кнопку панели действий с навигационным ящиком?

у меня такая проблема: я работаю с навигационным ящиком панели действий, но я хочу дополнительно добавить кнопку в строку меню, что-то вроде этих кнопок: http://screenshots.en.sftcdn.net/blog/en/2013/06/notifications-b.png

это мой xml-файл:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/drawer_layout"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >

<FrameLayout
     android:id="@+id/content_frame"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />
     <!-- The navigation drawer -->
<ListView
     android:id="@+id/left_drawer"
     android:layout_width="240dp"
     android:layout_height="match_parent"
     android:layout_gravity="start"
     android:background="#111"
     android:choiceMode="singleChoice"
     android:divider="@android:color/transparent"
     android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>

Итак, я знаю, что добавление кнопок выглядит примерно так:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          yourapp:showAsAction="ifRoom"  />
</menu>

но я до сих пор не знаю, как установить обе части, кто-нибудь может мне помочь?


person jscherman    schedule 13.11.2013    source источник


Ответы (2)


В вашем Activity_Main или любом другом вашем основном действии вы вызываете:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.YOUR_MENU, menu);
    super.onCreateOptionsMenu(menu,inflater);
}

YOUR_MENU — это меню/панель действий, которое вам нужно.

Если вы хотите добавить еще одну кнопку или индивидуализировать кнопки в соответствии с конкретным фрагментом внутри макета frame_layout/drawer, то в своем фрагменте добавьте это в onCreateView:

setHasOptionsMenu(true);

Это сообщает активности, что вы собираетесь изменить меню опций.

Затем:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.YOUR_NEW_MENU, menu);
    super.onCreateOptionsMenu(menu,inflater);
}

Все элементы YOUR_NEW_MENU будут добавлены в меню параметров/панель действий.

person Everett    schedule 14.11.2013

Вы сопоставили этот пункт меню с вашей деятельностью? Если нет, вам нужно переопределить onCreateOptionsMenu в своей деятельности и раздуть его там.

Вы можете прочитать это руководство по меню.

person prijupaul    schedule 14.11.2013