ActionBar 出现在Android 3.0后 API 11之后,替代了3.0之前的标题栏
ActionBar分为四个区域
A : 图标 || B : 标题 || C : 内容切换 || D :菜单
常用方法
Activity.getActionBar() // 在Activity中得到ActionBar对象
隐藏ActionBar
Manifest:
android:theme="@android:style/Theme.Holo.NoActionBar"
JavaCode:
ActionBar.hide();
ActionBar.setBackgroundDrawable(Drawable) // 设置背景
A:
ActionBar.setDisplayHomeAsUpEnabled(boolean) // 设置A区域是否可以点击
ActionBar.setDisplayShowHomeEnabled(boolean) // 设置A区域图标是否显示
事件监听 Activity重写onMenuItemSelected方法,android.R.id.home为区域按钮id
@Override public boolean onMenuItemSelected(int featureId, MenuItem item) { if (item.getItemId() == android.R.id.home) { // TODO Toast.makeText(this, "Home", Toast.LENGTH_SHORT).show(); } return super.onMenuItemSelected(featureId, item); }
B:
ActionBar.setTitle(CharSequence) // 设置区域显示内容
ActionBar.setDisplayShowTitleEnabled(false); // 设置区域是否显示
C:
ActionBar.setNavigationMode(int) // 设置此区域的样式
ActionBar.NAVIGATION_MODE_STANDARD // 默认
ActionBar.NAVIGATION_MODE_TABS // 选项卡
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.TabListener tabListener = new ActionBar.TabListener() { @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) {} @Override public void onTabSelected(Tab tab, FragmentTransaction ft) {} @Override public void onTabReselected(Tab tab, FragmentTransaction ft) {} }; actionBar.addTab(actionBar.newTab().setText("Tab_01").setTabListener(tabListener)); actionBar.addTab(actionBar.newTab().setText("Tab_02").setTabListener(tabListener)); actionBar.addTab(actionBar.newTab().setText("Tab_03").setTabListener(tabListener)); // 如果不加监听程序会报错
ActionBar.NAVIGATION_MODE_LIST // List显示
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); String[] lists = { "List_01", "List_02", "List_03" }; ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, lists); ActionBar.OnNavigationListener navListener = new ActionBar.OnNavigationListener() { @Override public boolean onNavigationItemSelected(int arg0, long arg1) { return false; } }; actionBar.setListNavigationCallbacks(listAdapter, navListener);
D:
关于D菜单区域相当于重写3.0之前的菜单,在屏幕显示不下的会显示三个点,点击会展开
项的生成与事件监听,重写Activity中的以下方法
@Override public boolean onCreateOptionsMenu(Menu menu) { super.getMenuInflater().inflate(R.menu.main, menu); // 填充Menu return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); // TODO 根据id判断处理 return super.onOptionsItemSelected(item); }