Action bar的主要目的是:
1. 提供一个用于识别应用程序的标示和用户的位置的专用空间。
这个空间的左边是应用的图标或logo,以及Activity的标题。但是,如果是像当前选择的标签这样的标识当前View对象的导航标签,你可以选择删除Activity的标题。
2. 在不同的应用程序之间提供一致的导航和视觉体验。
Action bar提供了用于Fragment间切换的内置导航标签。它还提供了一个用于替换导航模式或优化当前视觉效果(如按照不同条件排序的列表)的下拉列表。
3. 突出Activity的关键操作(如“搜索”、“创建”、“共享”等),并且在可预见的方法内给用户提供快捷的访问。
对于关键的用户操作,你能够通过把选项菜单项作为操作项直接放到操作栏中,从而提供快捷的访问。操作项目还能提供一个操作窗口,这个窗口给更直接的操作行为提供一个嵌入的窗口部件。没有改进成操作项的菜单项在溢出菜单中还是有效的,用户既可以使用设备上的菜单按钮(设备上有按钮的时候),也可以使用操作栏中的溢出菜单按钮(当设备上不包含菜单按钮时)来显示这些操作项目。
下面上一个简单ActionBar的代码
import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.Toast; 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); } }
layout : activity_first_action_bar.xml
<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>
menu : activity_first_action_bar.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="保存"/> </menu>
该例子会在附件中有源代码。
介绍一个item中的android:showAsAction选项:
这个属性可接受的值有:
1、always:这个值会使菜单项一直显示在Action Bar上。
2、ifRoom:如果有足够的空间,这个值会使菜单项显示在Action Bar上。
3、never:这个值使菜单项永远都不出现在Action Bar上。
4、withText:这个值使菜单项和它的图标,菜单文本一起显示。
android:showAsAction="always|collapseActionView表示可扩展
AndroidManifest.xml中<activity中配置 android:uiOptions="splitActionBarWhenNarrow"
会将ActionBar放到底下的界面中