你的位置:首页 > 操作系统

[操作系统]【ActionBar的使用】


在AS工程中使用ActionBar

简单实用:

1、功能清单文件中指定主题标签属性Theme.Holo或其子类

 1 <application android :theme="@android:style/Theme.Holo.Light" > 

2、可以自己指定显示的图标,默认是应用的图标

1 <activity2       android:name=".UI.MainActivity"3       android:logo="@drawable/icon" />

3、在Activity中设置属性

 1 @Override 2   protected void onCreate(Bundle savedInstanceState) { 3     super.onCreate(savedInstanceState); 4     setContentView(R.layout.activity_main); 5  6     android.app.ActionBar actionBar= getActionBar(); 7     actionBar.show();//设置显示 8     //actionBar.hide();//设置隐藏 9     actionBar.setHomeButtonEnabled(true);10     actionBar.setDisplayShowHomeEnabled(true);//以上两句是设置可以让actionBar的图标可以响应点击事件11     actionBar.setDisplayHomeAsUpEnabled(true);//这一行用于返回效果12   }

  也可以设置Activity标签属性来设置隐藏

1 <activity2   android:name=".UI.WelComeActivity"3   android:theme="@android:style/Theme.NoTitleBar">

4、在res资源目录下创建一个menu文件夹,在menu文件夹创建一个actionbar_menu.

  android:showAsAction :标签属性,根据需要自行设置

  android:title :一般都设置,根据需要,但并不一定会显示,根据showAsAction标签影响

 1 <? 2 <menu  3   <item 4     android:id="@+id/menu_seek" 5     android:showAsAction="always" 6     android:actionView 7     android:title="搜索" /> 8   <item 9     android:id="@+id/menu_history"10     android:showAsAction="never"11     android:title="查看历史" />12   <item13     android:id="@+id/menu_down"14     android:showAsAction="never"15     android:title="查看下载" />16 </menu>

fRoom会显示在Item中,但是如果已经有4个或者4个以上的Item时会隐藏在溢出列表中。当然个
数并不仅仅局限于4个,依据屏幕的宽窄而定
never永远不会显示。只会在溢出列表中显示,而且只显示标题,所以在定义item的时候,最好
把标题都带上。
always无论是否溢出,总会显示。
withTextwithText值示意Action bar要显示文本标题。Action bar会尽可能的显示这个
标题,但是,如果图标有效并且受到Action bar空间的限制,文本标题有可
能显示不全。
   collapseActionView  声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,
这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。
一般要配合ifRoom一起使用才会有效果。

 

5、重写回调方法,就可以显示了

1 @Override2   public boolean onCreateOptionsMenu(Menu menu) {3     MenuInflater inflater = getMenuInflater();4     inflater.inflate(R.menu.actionbar_menu, menu);5     return super.onCreateOptionsMenu(menu);6   }

点击显示效果

6、重写点击回调方法,根据需要添加代码

  android.R.id.home默认指定的是左上角的图标点击响应

 1 @Override 2 public boolean onOptionsItemSelected(MenuItem item) { 3   switch (item.getItemId()) { 4     case android.R.id.home: 5       Toast.makeText (this, "你点击了“home”按键!" , Toast.LENGTH_SHORT).show() ; 6       return true; 7     case R.id. menu_seek: 8       Toast.makeText (this, "你点击了“搜索”按键!" , Toast.LENGTH_SHORT).show() ; 9       return true;10     case R.id. menu_down:11       Toast.makeText (this, "你点击了“查看下载”按键!" , Toast.LENGTH_SHORT).show() ;12       return true;13     case R.id. menu_history:14       Toast.makeText (this, "你点击了“查看历史”按键!" , Toast.LENGTH_SHORT).show() ;15       return true;16     default:17       return super .onOptionsItemSelected(item);18   }19 }

  一般左上角的图标点击都是回退到主界面,在图标的点击响应添加代码

 1 case android.R.id.home: 2   //finish();这个只是简单的销毁了当前的界面 3   Intent upIntent = NavUtils.getParentActivityIntent(this);//获取到跳转至父Activity的Intent 4   //如果父Activity和当前Activity是在同一个Task中的,则直接调用navigateUpTo()方法进行跳转 5   if (NavUtils.shouldUpRecreateTask(this, upIntent)) { 6     android.support.v4.app.TaskStackBuilder.create(this) 7           .addNextIntentWithParentStack(upIntent) 8           .startActivities(); 9   } else {//如果不是在同一个Task中的,则需要借助TaskStackBuilder来创建一个新的Task10     upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);11     NavUtils.navigateUpTo(this, upIntent);12   }13   Toast.makeText(this, "你点击了“home”按键!", Toast.LENGTH_SHORT).show();14 return true;