Android界面编程之十一 ActionBar

本文详细介绍了Android ActionBar的功能,包括启用、显示选项菜单、程序图标导航、添加Action View、实现Tab导航和下拉式导航。通过示例代码展示了如何在实际项目中灵活运用这些功能,以增强用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ActionBar提供如下功能
  • 显示选项菜单的菜单项
  • 使用程序图标作为返回Home主屏幕或向上的导航操作
  • 提供交互式View作为Action View
  • 提供基于Tab的导航方式,可用于切换多个Fragment
  • 提供基于下拉的导航方式

2.11.1 启用 ActionBar
若希望关闭ActionBar,可设置应用主题为XXX.NoActionBar
实际项目中通常推荐使用代码来控制ActionBar的显示、隐藏:show()\hide()
示例代码:
java————————————
public class MainActivity extends ActionBarActivity {

ActionBar
actionBar;
   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);
       
actionBar = getActionBar();
    }

   
public void showActionBar(View source)
    {
   
actionBar.show();
    }
   
public void hideActionBar(View source)
    {
   
actionBar.hide();
    }
}

2.11.2 使用ActionBar显示选项菜单
从Android3.0 开始,MenuItem新增了如下方法:
setShowAsAction(int actionEnum):该方法设置是否将该菜单项显示在ActionBar上,作为ActionItem
该方法支持的参数有:
SHOW_AS_ACTION_ALWAYS
总是将MenuItem显示在ActionBar上
SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
将该Action View 折叠成普通菜单项
SHOW_AS_ACTION_IF_ROOM
当ActionBar位置足够时才显示MenuItem
SHOW_AS_ACTION_NEVER

SHOW_AS_ACTION_WITH_TEXT
显示,并显示菜单项文本
Android允许在XML菜单资源文件中为<item />元素指定如下属性
android:showAsAction 该属性值的作用类似于setShowAsAction(int actionEnum)

2.11.3 启用程序图标导航
为了将程序转变成可以点击的图标,可以调用ActionBar的如下方法
setDisplayHomeAsUpEnable(boolean showHomeAsUp) 
设置是否将应用程序图标转变成可点击图标,并在图标上添加一个向左的箭头
setDisplayOptions(int options)
通过传入int类型常量来控制该ActionBar的显示选项
setDisplayShowHomeEnabled(boolean showHome)
设置是否显示应用程序图标
setHomeButtonEnabled(boolean enabled)
设置是否将应用程序图标转变成可点击的按钮


2.11.4 添加Action View
ActionBar上除了可以显示普通的Action Item之外,还可以显示普通的UI组件。为ActionBar添加Action View可以用如下两种方法:
  • 定义Action Item时使用android:actionViewClass 属性指定Action View的实现类
  • 定义Action Item时使用android:actionLayout属性指定Action View对应的视图资源


2.11.5 使用 ActionBar实现Tab导航
ActionBar在顶端生成多个Tab标签,当用户点击某个Tab标签时,系统根据用户点击时间导航指定页面
  1. setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)
  2. 调用ActionBar的addTab()方法添加多个Tab标签
实际应用时常与Fragment配合


2.11.6 使用ActionBar实现下拉式导航
为了使用ActionBar实现Tab导航步骤
  1. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)
  2. setListNavigationCallbacks(SpinnerAdapter adapter, ActionBar.OnNavigationListener callback)()添加多个列表项,并为每个列表项设置事件监听器
示例代码:
public class ActionBar_DropDownNav extends Activity implements
          ActionBar.OnNavigationListener
{
     private static final String SELECTED_ITEM = "selected_item";

     @Override
     public void onCreate(Bundle savedInstanceState)
     {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          final ActionBar actionBar = getActionBar();
          actionBar.setDisplayShowTitleEnabled(true);
          actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
          actionBar.setListNavigationCallbacks(
               new ArrayAdapter<String>(ActionBar_DropDownNav.this,
                    android.R.layout.simple_list_item_1,
                    android.R.id.text1, new String[]
                    {“page1”,”page2,”page3" }), this);
     }

     @Override
     public void onRestoreInstanceState(Bundle savedInstanceState)
     {
          if (savedInstanceState.containsKey(SELECTED_ITEM))
          {
               getActionBar().setSelectedNavigationItem(
                    savedInstanceState.getInt(SELECTED_ITEM));
          }
     }

     @Override
     public void onSaveInstanceState(Bundle outState)
     {
          outState.putInt(SELECTED_ITEM,
               getActionBar().getSelectedNavigationIndex());
     }
     @Override
     public boolean onNavigationItemSelected(int position, long id)
     {
          Fragment fragment = new DummyFragment();
          Bundle args = new Bundle();
          args.putInt(DummyFragment.ARG_SECTION_NUMBER, position + 1);
          fragment.setArguments(args);
          FragmentTransaction ft = getFragmentManager().beginTransaction();
          ft.replace(R.id.container, fragment);
          ft.commit();
          return true;
     }
}

本章小结
View  ViewGroup
基本UI、高级UI
AlertDialog、PopupWindow、DatePickerDialog、TimerPickerDialog
SubMenu、ContextMenu、MenuItem
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值