ActionBar -- 添加Action按钮

来源:互联网 发布:java高性能并发框架 编辑:程序博客网 时间:2024/05/24 00:45

为ActionBar添加上述自定义按钮。

点击最右边的三个竖点,弹出定位/设置/帮助等按钮,如下图1。

点击查找按钮时,如下图2。

                                                       图一                               

 

                                                       图二

 

 

1.首先在res -- men 文件夹下面,写一个simrecord_menu.xml布局文件。

其中一个item代表一个按钮。我们通过五个item定义了五个按钮,分别是:查找/添加/定位/设置/帮助/

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:alpha="http://schemas.android.com/apk/res-auto" >              <item            android:id="@+id/menu_search1"            android:icon="@drawable/menu_search_white"            android:actionViewClass="android.widget.SearchView"            android:showAsAction="ifRoom|collapseActionView"            android:title="@string/search"/><item     android:id = "@+id/menu_add"    android:icon="@drawable/menu_add_bg"    android:title="@string/add"    android:showAsAction="ifRoom|withText"/> <item     android:id = "@+id/menu_locate"    android:icon="@drawable/menu_locate_bg"    android:title="@string/locate"    android:showAsAction="never"/><item     android:id = "@+id/menu_settings"    android:icon="@drawable/menu_settings_bg"    android:title="@string/settings"    android:showAsAction="never"/>    <item     android:id = "@+id/menu_help"    android:icon="@drawable/menu_help_bg"    android:title="@string/help"    android:showAsAction="never"/></menu>

 

其中 android:icon表示的是显示的图标,android:title表示的是显示的文字。通常在actionbar上显示的都是图标,在溢出菜单上(即三个竖点那个按钮)显示都是文字。

  android:showAsAction表示的是该按钮的显示方式,有五个可选值:

  ifRoom |  never | always | collapseActionView | withText |

 ifRoom: 表示如果空间有多余的位置,就显示在actionbar上,否则将隐藏在溢出菜单上。如该项目的添加按钮,则是设置为ifRoom,

              当点击搜索按钮时,由于actionbar没有多余的位置,此时它被隐藏在溢出菜单中,见图二。

 never:表示永远不显示在actionbar上,总是隐藏在溢出菜单上。如该项目的 定位/设置/帮助三个按钮,都是隐藏在溢出菜单的。

always:和nerver相反,表示永远显示在actionbar上。

collapseActionView:表示点击该按钮时,该按钮可以展开。如点击搜索按钮后,SearchView会展开占整个actionbar。

withText:显示actionbar的文本标题title

 

 

2.在显示该actionbar的activity中覆写方法onCreateOptionsMenu,将布局文件simrecord_menu.xml设置到activity中

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubMenuInflater mMenuInflater = new MenuInflater(this);mMenuInflater.inflate(R.menu.simrecord_menu, menu);return true;}


 

3.为点击各个按钮设置监听,即覆写方法onOptionsItemSelected

通过每一个Item的ID,设置它的监听。

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubLog.d(TAG," onOptionsItemSelected() item="+item);Log.d(TAG," onOptionsItemSelected() item.getItemId()="+item.getItemId());switch(item.getItemId()){case android.R.id.home:Toast.makeText(this, "home", Toast.LENGTH_SHORT).show();finish();return true;case R.id.menu_search1:Toast.makeText(this, "menu_search", Toast.LENGTH_SHORT).show();return true;case R.id.menu_add:Toast.makeText(this, "menu_add", Toast.LENGTH_SHORT).show();return true;case R.id.menu_help:Toast.makeText(this, "menu_help", Toast.LENGTH_SHORT).show();return true;case R.id.menu_locate:Toast.makeText(this, "menu_locate", Toast.LENGTH_SHORT).show();return true; case R.id.menu_settings:Toast.makeText(this, "menu_settings", Toast.LENGTH_SHORT).show();return true; default:return super.onOptionsItemSelected(item);}}


 

 

 


 

 

 

 

0 0
原创粉丝点击