为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中
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
MenuInflater mMenuInflater = new MenuInflater(this);
mMenuInflater.inflate(R.menu.simrecord_menu, menu);
return true;
}
通过每一个Item的ID,设置它的监听。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
Log.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);
}
}