android:showAsAction=""
参数:always 使菜单项一直显示在antionBar上
ifroom 如果有足够的空间,这个菜单项会显示在actionBar上
never 这个值永远不会显示在菜单项上
withText: 使菜单项的图标文字一起显示出来
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_save"
android:icon="@drawable/save"
android:showAsAction="ifRoom|withText"
android:title="保存"/>
<item
android:id="@+id/menu_open"
android:icon="@drawable/open"
android:showAsAction="ifRoom"
android:title="打开"/>
<item
android:id="@+id/menu_search"
android:icon="@drawable/search"
android:showAsAction="always"
android:title="保存"/>
<item
android:id="@+id/menu1"
android:icon="@drawable/ic_launcher"
android:showAsAction="ifRoom"
android:title="菜单项1"/>
<item
android:id="@+id/menu2"
android:icon="@drawable/ic_launcher"
android:showAsAction="ifRoom"
android:title="菜单项2"/>
</menu>
layout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button_hide_show_actionbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClick_HideShowActionBar"
android:text="隐藏ActionBar" />
</LinearLayout>
public class FirstActionBarActivity extends Activity
{
private Button hideShowActionBar;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
setContentView(R.layout.activity_first_action_bar);
hideShowActionBar = (Button) findViewById(R.id.button_hide_show_actionbar);
}
public void onClick_HideShowActionBar(View view)
{
if (getActionBar() == null)
return;
if (getActionBar().isShowing())
{
getActionBar().hide();
hideShowActionBar.setText("显示ActionBar");
}
else
{
getActionBar().show();
hideShowActionBar.setText("隐藏ActionBar");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_first_action_bar, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
Toast.makeText(this, item.getTitle(), Toast.LENGTH_LONG).show();
return super.onOptionsItemSelected(item);
}
如果在androidManifest 中配置 activity android:uiOptions="splitActionBarWhenNarrow" 就会在拥挤的时候上下边分别显示,后者全部在下边显示
可以收缩的actionbar
menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_item_edit"
android:actionViewClass="android.widget.EditText"
android:showAsAction="always"
android:title="编辑"/>
<item
android:id="@+id/menu_item_clock"
android:actionLayout="@layout/action_view_clock"
android:icon="@drawable/time"
android:showAsAction="always|collapseActionView"
android:title="时间"/>
<item
android:id="@+id/menu_item_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/search"
android:showAsAction="always|collapseActionView"
android:title="搜素"/>
</menu>
public class ActionViewActivity extends Activity implements
OnActionExpandListener
{
private Menu menu;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_action_view);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_action_view, menu);
this.menu = menu;
for(int i = 0; i < menu.size(); i++)
{
menu.getItem(i).setOnActionExpandListener(this);
}
return true;
}
@Override
public boolean onMenuItemActionExpand(MenuItem item)
{
Toast.makeText(this, "<" + item.getTitle() + ">已经展开", Toast.LENGTH_LONG)
.show();
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item)
{
Toast.makeText(this, "<" + item.getTitle() + ">已经收缩", Toast.LENGTH_LONG)
.show();
return true;
}