原文网址:http://irtutsk.iteye.com/blog/2117707
ActionBar的组成:
[1]AppIcon:标题区,显示应用程序图标和标题,也可以自定义。
[2]ViewControl:导航区,可以设置Tab选项卡导航,Spinner下拉导航。
[3]ActionButtons:菜单区,添加菜单按钮。
[4]ActionOverflow:溢出区,显示不下的菜单按钮自动添加到这里,有Menu按键的手机不显示,只能通过Menu按键呼叫。
ActionBar的使用(兼容2.x):
使用API>18,导入Support V7包。
- import android.support.v7.app.ActionBar;
- import android.support.v7.app.ActionBarActivity;
使当前Activity 继承 ActionBarActivity。
- public class MainActivity extends ActionBarActivity
获取当前ActionBar。
- ActionBar actionBar = getSupportActionBar();
配置ActionBar。
- //显示ActionBar
- actionBar.show();
- //隐藏ActionBar
- actionBar.hide();
- //显示图标
- actionBar.setDisplayShowHomeEnabled(true);
- //显示标题
- actionBar.setDisplayShowTitleEnabled(true);
- //设置图标
- actionBar.setIcon(R.drawable.ic_launcher);
- //设置标题
- actionBar.setTitle(R.string.action_bar_Title);
- //允许使用图标按钮
- actionBar.setHomeButtonEnabled(true);
- //显示返回主界面按钮
- actionBar.setHomeButtonEnabled(true);
- //显示返回上一级按钮
- actionBar.setDisplayHomeAsUpEnabled(true);
- //允许使用自定义视图
- actionBar.setDisplayShowCustomEnabled(true);
ActionBar添加菜单:
ActionBar添加菜单的方法与Android2.x添加普通菜单的方法相同。
- //添加菜单
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- //资源文件方式添加
- getMenuInflater().inflate(R.menu.main, menu);
- //代码方式添加
- MenuItem item = menu.add(groupId, itemId, order, title)
- .setIcon(iconRes);
- MenuItemCompat.setShowAsAction(item,
- MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
- return true;
- }
- //处理菜单项
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- int id = item.getItemId();
- if (id == R.id.action_settings) {
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
处理返回按钮。
在onOptionsItemSelected中处理MenuItem Id为home或homeasup即可。
是android.R.id.home而不是R.id.home,没有android.R.id.homeasup。
- if (id == android.R.id.home) {
- Intent intent = new Intent(this, MainActivity.class);
- startActivity(intent);
- return true;
- }
菜单的资源文件。
- <menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- tools:context="com.example.zhuajimazi.MainActivity" >
- <item
- android:id="@+id/action_settings"
- android:orderInCategory="100"
- android:icon="@drawable/settings"
- android:title="@string/action_settings"
- app:showAsAction="ifRoom"/>
- <item
- android:id="@+id/action_update"
- android:orderInCategory="100"
- android:icon="@drawable/update"
- android:title="@string/action_update"
- app:showAsAction="ifRoom"/>
- <item
- android:id="@+id/action_about"
- android:orderInCategory="100"
- android:icon="@drawable/about"
- android:title="@string/action_about"
- app:showAsAction="ifRoom"/>
- <item
- android:id="@+id/action_exit"
- android:orderInCategory="100"
- android:icon="@drawable/exit"
- android:title="@string/action_exit"
- app:showAsAction="ifRoom"/>
- </menu>