我想制作像 Evernote 中一样具有 ActionBar 的幻灯片菜单。在这个应用程序中,似乎它有 2 个动作条(我不确定)。一个在主菜单中,另一个在滑动菜单中。
反正有没有像这样构建2个ActionBars?或者它只是一个类似于 ActionBar 外观的布局安排。
感谢您的所有帮助,并为我的英语感到抱歉。
附言。我使用 ActionBarSherlock 和 SlidingMenu 来实现这一点,但我找不到像在 Evernote 中那样的方法。
我想制作像 Evernote 中一样具有 ActionBar 的幻灯片菜单。在这个应用程序中,似乎它有 2 个动作条(我不确定)。一个在主菜单中,另一个在滑动菜单中。
反正有没有像这样构建2个ActionBars?或者它只是一个类似于 ActionBar 外观的布局安排。
感谢您的所有帮助,并为我的英语感到抱歉。
附言。我使用 ActionBarSherlock 和 SlidingMenu 来实现这一点,但我找不到像在 Evernote 中那样的方法。
你写了:
我使用(...)SlidingMenu
如果SlidingMenu
您的意思是Jeremy Feinstein的SlidingMenu,并且您想继续使用此菜单库,则不能使用 'real' ActionBar
,因为SlidingMenu's
menu 实现为 a ,在库中Fragment
命名。SlidingMenuFragment
AFragment
无法容纳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
然后,将该布局的背景颜色/可绘制对象设置为与列表其余部分不同的颜色。请参见下面的示例(我知道嵌套 LinearLayouts 并不漂亮......只是一个使用示例应用程序中的快速示例来LinearLayout
理解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
。
编辑:您在评论中写道:
searchView 示例有效 我无法让下拉菜单以相同的方式工作。
EverNote 应用程序中的下拉菜单看起来像是使用 Holo 主题实现的Spinner
。Android Developers对如何向布局添加 a 进行了详尽的介绍。Spinner
Spinner 的逻辑/java 代码将被放入SlidingMenuFragment
(如果您使用SlidingMenu
库)。
好的,我在 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();
}
它奏效了。谢谢贡纳尔卡尔森。