网上拷贝的actionbar

setHomeButtonEnabled这个小于4.0版本的默认值为true的。但是在4.0及其以上是false,该方法的作用:决定左上角的图标是否可以点击。没有向左的小图标。 true 图标可以点击  false 不可以点击。


actionBar.setDisplayHomeAsUpEnabled(true)    // 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UP


actionBar.setDisplayShowHomeEnabled(true)   //使左上角图标是否显示,如果设成false,则没有程序图标,仅仅就个标题,否则,显示应用程序图标,对应id为 android.R.id.home,对应ActionBar.DISPLAY_SHOW_HOME


actionBar.setDisplayShowCustomEnabled(true)  // 使自定义的普通View能在title栏显示,即actionBar.setCustomView能起作用,对应 ActionBar.DISPLAY_SHOW_CUSTOM


actionBar.setDisplayShowTitleEnabled(true)   //对应ActionBar.DISPLAY_SHOW_TITLE。

 

 

 

 

 

 

有时候我们需要在不同的时候改变ActionBar中MenuItem的项数,或者隐藏某些MenuItem,百度上找了很久没什好资料,还是Google了一下,StackOverFlow上有大神解决了。

 


 

先看看  StackOverFlow 上的问题:

 

How do I hide a menu item in the actionbar?

 


 

   我来总结一下:

 

   (1)在Activity的onCreateOptionMenu()方法中获取每一个MenuItem,然后再满足某一条件下调用setVisible()方法隐藏该MenuItem。

 


 

  

 

  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.         getMenuInflater().inflate(R.menu.action_main, menu);  
  4.         MenuItem actionSettings = menu.findItem(R.id.action_settings);  
  5.         if(...满足某一条件...){  
  6.             actionSettings.setVisible(true);  
  7.             else{  
  8.             actionSettings.setVisible(false);  
  9.         }  
  10.         return true;  
  11.     }  

 


 

    (2)调用Activity的invalidateOptionsMenu()方法,Activity就会重新调用onCreateOptionMenu()方法重新生成ActionBar。不过 invalidateOptionsMenu() 这个方法只有API11以上才能用,但不用担心,Google在V4包的FragmentActivity中也提供了一个supportInvalidateOptionsMenu()方法。

 


 

其中setHomeButtonEnabled和setDisplayShowHomeEnabled共同起作用,如果setHomeButtonEnabled设成false,即使setDisplayShowHomeEnabled设成true,图标也不能点击

posted @ 2015-05-28 09:06  漂城  阅读(164)  评论(0编辑  收藏  举报