一、在menu/main.xml设计menu(菜单)和ActionBar(活动栏)
效果如下:
1、菜单项属性android:showAsAction,如果没有则在底部菜单显示
这个属性可接受的值有:
(1)always:这个值会使菜单项一直显示在Action Bar上。
(2)ifRoom:如果有足够的空间,这个值会使菜单项显示在Action Bar上。
(3)never:这个值使菜单项永远都不出现在Action Bar上。
(4)withText:这个值使菜单项以图标,菜单文本一起显示在底部菜单。
如果有必要可以同时设置两个属性 <android:showAsAction="ifRoom|withText">
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/action_search" android:icon="@android:drawable/ic_menu_search" android:title="@string/action_bar_search" android:showAsAction="ifRoom" android:actionViewClass="android.widget.SearchView" /> <item android:id="@+id/action_edit" android:icon="@android:drawable/ic_menu_edit" android:showAsAction="always" android:title="@string/action_bar_edit" /> <item android:id="@+id/action_add" android:icon="@android:drawable/ic_menu_add" android:title="@string/action_bar_add" /> </menu>
2、添加一项菜单,并且带有子菜单:
<item android:id="@+id/action_sort" android:icon="@android:drawable/ic_menu_sort_by_size" android:title="@string/action_bar_sort" android:showAsAction="ifRoom"> <menu> <item android:id="@+id/action_sort_size" android:icon="@android:drawable/ic_menu_sort_by_size" android:title="@string/action_bar_sort_size" /> <item android:id="@+id/action_sort_alpha" android:icon="@android:drawable/ic_menu_sort_alphabetically" android:title="@string/action_bar_sort_alpha"/> </menu> </item>
3、菜单项监听事件:
@Override
public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (item.getItemId()) { case R.id.menu_save: Toast.makeText(getApplicationContext(), "menu_save", 0).show(); break;default: break; } return super.onOptionsItemSelected(item); }
4、其他:
(1)点击Search按钮的时候,它的Action View会显示出来
<item android:id="@+id/action_search" android:icon="@android:drawable/ic_menu_search" android:title="@string/action_bar_search" android:showAsAction="ifRoom" android:actionViewClass="android.widget.SearchView" />
属性:
android:actionProviderClass="android.widget.ShareActionProvider"
android:onClick="onSort"
android:actionViewClass="android.widget.SearchView"
二、代码设计ActionBar
1、添加ActionBar并显示或隐藏
public boolean onCreateOptionsMenu(Menu menu) { MenuItem add = menu.add(0, 1, 0, "Save"); MenuItem open = menu.add(0, 2, 1, "Open"); MenuItem close = menu.add(0, 3, 2, "Close"); add.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); open.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); close.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); return true; }
隐藏ActionBar:
actionBar = getActionBar();
actionBar.hide();
2、实现用户点击ActionBar 图标后返回前一个activity,可以通过在Actionbar设置setDisplayHomeAsUpEnabled(true) 来实现。
在当前Activity中添加:
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.about, menu); // 使应用程序图标向上导航 ActionBar actionBar = getActionBar(); // actionBar.hide();移除所有actionbar actionBar.setDisplayHomeAsUpEnabled(true); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (item.getItemId()) { case android.R.id.home: finish(); return true; default: return super.onOptionsItemSelected(item); } }
Done!