ActonBar介绍
ActionBar取代了传统的标题栏(title),其在activity位置就是title原有的位置,在activity的顶部。ActionBar上默认情况下包括了应用(app)的logo,logo的位置在ActionBar的左侧,紧挨在logo右侧的是activity的标题(title)。在ActionBar的右侧,可以是在选项菜单(options menu)中任意一个菜单项。ActionBar提供若干有用的特性,其中包括了:
① 作为“action选项”,在ActionBar上直接显示“选项菜单”(OptionsMenu)——
为用户进行某项操作提供直接的访问;
作为“action项”没有出现在ActionBar上得菜单项会被置于“更多...”菜单项
中,在ActionBar上,“更多...”菜单项是以下拉形式实现的。
② 为在多个fragments之间切换提供标签(tabs)功能;
③ 为导航提供下拉列表;
④ 在“action项”位置提供交互式action组件,例如搜索框。
在Activity中获得ActionBar
在Android 3.0及更高的版本中,Activity中都默认包含有ActionBar组件。特别要注意的是,所有使用“holographic”主题的Activity都包含有ActionBar,并且所有Android 3.0上的应用自动接收这个主题。一个应用被认为是基于Android 3.0的标识是在AndroidManifest中的<uses-sdk>标签中设置了android:minSdkVersion或者android:targetSdkVersion属性值为11或者更大值时,此时的应用被系统认为是Android 3.0上得应用,这样就默认接受“holographic”主题,即其中的Activity包含有ActionBar。
效果如图:
ActionBarDemoActivity:
package com.gem.hsx.actionbar;
import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
public class ActionBarDemoActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/**
* 加载actionbar的布局文件,并且创建actionbar,屏蔽了menu按键
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.actionbar_menu, menu);
return true;
}
/**
* actionbar的item的监听事件
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.save:
Toast.makeText(ActionBarDemoActivity.this, "你点击的是保存", 0).show();
break;
case R.id.set:
Toast.makeText(ActionBarDemoActivity.this, "你点击的是设置", 0).show();
break;
case R.id.another:
Toast.makeText(ActionBarDemoActivity.this, "你点击的是其他操作", 0).show();
break;
case R.id.delete:
Toast.makeText(ActionBarDemoActivity.this, "你点击的是删除", 0).show();
break;
case R.id.update:
Toast.makeText(ActionBarDemoActivity.this, "你点击的是修改", 0).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
/**
* 重写onStart方法以便显示actionbar
*/
@Override
protected void onStart() {
super.onStart();
ActionBar actionBar = this.getActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请点击右上角的图标,然后再点击其他操作" />
</LinearLayout>
actionbar_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu"
android:icon="@drawable/ic_launcher"
android:showAsAction="always"
android:title="菜单">
<menu>
<item
android:id="@+id/set"
android:icon="@drawable/ic_launcher"
android:title="设置">
</item>
<item
android:id="@+id/save"
android:icon="@drawable/ic_launcher"
android:title="保存">
</item>
<item
android:id="@+id/another"
android:icon="@drawable/ic_launcher"
android:title="其他操作">
<menu>
<item
android:id="@+id/delete"
android:icon="@drawable/ic_launcher"
android:title="删除">
</item>
<item
android:id="@+id/update"
android:icon="@drawable/ic_launcher"
android:title="修改">
</item>
</menu>
</item>
</menu>
</item>
</menu>