我想在Evernote中制作具有ActionBar的幻灯片菜单。在这个应用程序中,似乎它有2个ActionBars(我不确定)。一个在主菜单,另一个在滑动菜单中。
有没有像这样构建2个ActionBars?或者它只是一个类似于ActionBar外观的布局布局。
感谢您的帮助,对不起我的英语。
PS。我使用ActionBarSherlock和SlidingMenu来实现这一点,但我找不到像在Evernote中那样做的方法。
答案 0 :(得分:9)
您写道:
我使用(...)SlidingMenu
如果SlidingMenu
代表Jeremy Feinstein的SlidingMenu,并且您想继续使用此菜单库,则无法使用“真实”ActionBar
,自SlidingMenu's
菜单实现为Fragment
,在库中名为SlidingMenuFragment
。 Fragment
无法容纳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
这看起来像是:
打开时,右侧的浅灰色框是“真实”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。