如何在滑动菜单上放置一个操作栏(如在Evernote应用程序中)?

时间:2012-11-15 09:27:29

标签: android user-interface android-actionbar

enter image description here

我想在Evernote中制作具有ActionBar的幻灯片菜单。在这个应用程序中,似乎它有2个ActionBars(我不确定)。一个在主菜单,另一个在滑动菜单中。

有没有像这样构建2个ActionBars?或者它只是一个类似于ActionBar外观的布局布局。

感谢您的帮助,对不起我的英语。

PS。我使用ActionBarSherlock和SlidingMenu来实现这一点,但我找不到像在Evernote中那样做的方法。

2 个答案:

答案 0 :(得分:9)

您写道:

  

我使用(...)SlidingMenu

如果SlidingMenu代表Jeremy FeinsteinSlidingMenu,并且您想继续使用此菜单库,则无法使用“真实”ActionBar,自SlidingMenu's菜单实现为Fragment,在库中名为SlidingMenuFragmentFragment无法容纳ActionBar

您可以创建一个看起来像ActionBar的布局。在SlidingMenuFragment's中,您可以像这样设置布局文件:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ViewGroup viewGroup = (ViewGroup) inflater.inflate(R.layout.sliding_menu,null);

在菜单的布局文件中,这里称为sliding_menu.xml,您可以通过将其嵌套在顶部的布局中,使SearchView看起来像ActionBar中的LinearLayout。然后,您将该布局的背景颜色/可绘制设置为与列表其余部分不同的内容。请参阅下面的示例(我知道嵌套LinearLayouts并不漂亮......只是一个使用SlidingMenu示例应用程序中的<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#333333" > <SearchView android:id="@+id/searchView" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/list_padding" android:paddingRight="@dimen/list_padding" /> </LinearLayout> 来获取想法的快速示例:

ActionBar

这看起来像是:

enter image description here

打开时,右侧的浅灰色框是“真实”Spinner的一部分。

编辑:您在评论中写道:

  

searchView示例无法让下拉菜单以相同的方式工作。

EverNote应用程序中的下拉菜单看起来像是以Holo为主题的Spinner实现的。 Android开发者对如何向布局添加SlidingMenuFragment有一个全面的introduction。 Spinner的逻辑/ java代码将放在SlidingMenu中(如果你使用{{1}}库)。

答案 1 :(得分:1)

好的,我在Gunnar Karlsson的帮助下成功地做到了这一点,他推动我朝着正确的方向而不是SearchView

我实现了像这样的ImageButton:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#333333" >

        <ImageButton
                android:layout_width="wrap_content" 
                android:layout_height="60dp" 
                android:src="@drawable/ic_launcher"
                android:onClick="showPopup" />

</LinearLayout>


<ListView xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@android:id/list"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingLeft="@dimen/list_padding"
   android:paddingRight="@dimen/list_padding" />

</LinearLayout>

在我的mainActivity中,我只是从谷歌示例代码中提取这个以创建弹出菜单:

public void showPopup(View v) {
    PopupMenu popup = new PopupMenu(this, v);
    MenuInflater inflater = popup.getMenuInflater();
    inflater.inflate(R.menu.actions, popup.getMenu());
    popup.show();
}

它有效。谢谢Gunnar Karlsson。