ActionBar(7)自定义的操作提供器

  当你想要创建一个有动态行为和在悬浮菜单中有默认图标的操作视窗时,继承ActionProvider类来定义这些行为是一个比好的的方案。创建自己的操作提供器,提供一个有组织的可重用的组件,而不是在Fragment或Activity的代码中处理各种操作项的变换和行为。

       要创建自己的操作提供器,只需简单的继承ActionProvider类,并且实现合适的回调方法。你应该实现以下重要的回调方法:

ActionProvider()

        这个构造器把应用程序的Context对象传递个操作提供器,你应该把它保存在一个成员变量中,以便其他的回调方法使用。

OnCreateActionView()

        这是你给菜单项定义操作视窗的地方。使用从构造器中接收的Context对象,获取一个LayoutInflater对象的实例,并且用XML资源来填充操作视窗,然后注册事件监听器。如:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public View onCreateActionView() {  
  2.     // Inflate the action view to be shown on the action bar.  
  3.     LayoutInflater layoutInflater = LayoutInflater.from(mContext);  
  4.     View view = layoutInflater.inflate(R.layout.action_provider, null);  
  5.     ImageButton button = (ImageButton) view.findViewById(R.id.button);  
  6.     button.setOnClickListener(new View.OnClickListener() {  
  7.         @Override  
  8.         public void onClick(View v) {  
  9.             // Do something...  
  10.         }  
  11.     });  
  12.     return view;  
  13. }  

onPerformDefaultAction()
         
在选中悬浮菜单中的菜单时,系统会调用这个方法,并且操作提供器应该这对这个选中的菜单项执行默认的操作。

       但是,如果你的操作提供器提供了一个子菜单,即使是悬浮菜单中一个菜单项的子菜单,那么也要通过onPrepareSubMenu()回调方法来显示子菜单。这样onPerformDefaultAction()在子菜单显示时就不会被调用。

       注意:实现了onOptionsItemSelected()回调方法的Activity或Frament对象能够通过处理item-selected事件(并且返回true)来覆盖操作提供器的默认行为,这种情况下,系统不会调用onPerformDefaultAction()回调方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值