添加带导航抽屉的操作栏按钮?

时间:2013-11-13 23:50:17

标签: android button android-actionbar drawer

我遇到了这个问题:我正在使用操作栏导航抽屉,但我想在菜单栏中添加一个按钮,就像这些按钮: 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>

但我仍然不知道如何适应这两个部分,有人可以帮助我吗?

2 个答案:

答案 0 :(得分: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 /抽象布局中的特定片段个性化按钮,那么在你的片段中,把它添加到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的任何项目都会添加到选项菜单/操作栏中。

答案 1 :(得分:1)

您是否将此菜单项映射到您的活动?如果不是,您需要覆盖活动中的onCreateOptionsMenu并在那里充气。

您可以在菜单上阅读此tutorial