【Android 开发教程】自定义ActionBar

本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。

原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/


在上一节中,菜单选项是没有文字的。如果想要同时显示图标和文字,可以一起使用“|”和MenuItem.SHOW_AS_ACTION_WITH_TEXT常量。

[java] view plain copy
  1. MenuItem mnu1 = menu.add(000"Item 1");  
  2. {           
  3.     mnu1.setIcon(R.drawable.ic_launcher);  
  4.     mnu1.setShowAsAction(  
  5.         MenuItem.SHOW_AS_ACTION_IF_ROOM |  
  6.         MenuItem.SHOW_AS_ACTION_WITH_TEXT);              
  7. }  


除了可以点击Action项目,也可以点击ActionBar上面的应用图标。当应用图标被点击的时候,会调用onOptionsItemSelected()方法。如果想识别应用图标被点击了,可以使用adnroid.R.id.home常量。

[java] view plain copy
  1. private boolean MenuChoice(MenuItem item)  
  2.     {          
  3.         switch (item.getItemId()) {  
  4.         case  android.R.id.home:  
  5.             Toast.makeText(this,   
  6.                 "You clicked on the Application icon",   
  7.                 Toast.LENGTH_LONG).show();  
  8.             return true;  
  9.         case 0:  
  10.             Toast.makeText(this"You clicked on Item 1",   
  11.                 Toast.LENGTH_LONG).show();  
  12.             return true;  
  13.         case 1:  
  14.            ......  
  15.     }      
如果想让应用图标能被点击,我们需要调用setDisplayHomeAsUpEnable()方法:
[java] view plain copy
  1. /** Called when the activity is first created. */  
  2. @Override  
  3. public void onCreate(Bundle savedInstanceState) {  
  4.     super.onCreate(savedInstanceState);  
  5.     setContentView(R.layout.main);  
  6.       
  7.     ActionBar actionBar = getActionBar();  
  8.     actionBar.setDisplayHomeAsUpEnabled(true);  
  9.     //actionBar.hide();  
  10.     //actionBar.show(); //---show it again---  
  11. }  
当点击应用图标:


一般情况下,一个应用可能包含很多activity,那么应用的图标通常被用来返回主Activity。如果想这么做,就需要一个Intent对象,并使用Intent.FLAG_ACTIVITY_CLEAR_TOP标志。

[java] view plain copy
  1. case  android.R.id.home:  
  2.     Toast.makeText(this,   
  3.         "You clicked on the Application icon",   
  4.         Toast.LENGTH_LONG).show();  
  5.   
  6.     Intent i = new Intent(this, MyActionBarActivity.class);  
  7.     i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
  8.     startActivity(i);  
  9.   
  10.     return true;  
使用Intent.FLAG_ACTIVITY_CLEAR_TOP标识,可以确保当点击应用图标的时候,在“返回栈”里面的那些activity都会被清除掉。使用这种方法,如果用户点击返回键,其他的activity将不会再显示出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值