安卓SDK11.0版本以上就支持Action Bar了。所谓的Action Bar实际上就是代替以前的标题栏的存在,如果设置了那就会在Activity的顶部显示,我们可以在AndroidManifest.xml里面这样显示声明ActionBar:android:theme="@android:style/Theme.Holo"

一般情况下,我们需要在onCreateOptionsMenu里面把自定义的视图加载进去:

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}

然后可以知道我们加载了一个R.menu.main的视图,这个视图是这样写的:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >    <item        android:id="@+id/action_settings"        android:orderInCategory="100"        android:showAsAction="never"        android:title="@string/action_settings"/>    <item        android:id="@+id/writeArticle"        android:icon="@drawable/ic_launcher"        android:showAsAction="always"        android:title="写文章">    </item></menu>
第一个item是菜单,第二个item是我自定义的一个项。

其中要注意两个地方:

1)showAsAction:设置该条目什么时候显示在ActionBar里面

这个属性可接受的值有:
  1、always:这个值会使菜单项一直显示在Action Bar上。
  2、ifRoom:如果有足够的空间,这个值会使菜单项显示在Action Bar上。
  3、never:这个值使菜单项永远都不出现在Action Bar上。
  4、withText:这个值使菜单项和它的图标,菜单文本一起显示。

2)orderInCategory:actionbar里每个item的优先级,值越大优先级越低,actionbar地方不够就会放到overflow中。

那么设置了item之后怎么监听点击事件呢?

其实item点击之后会触发Activity里面的onOptionsItemSelected回调函数,下面是我处理的代码:

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case R.id.writeArticle:Toast.makeText(this, "write", 0).show();break;default:Toast.makeText(this, "null", 0).show();break;}return super.onOptionsItemSelected(item);}

这样设置我通过点击自定义的item writeArticle就能够Toast一条信息了。

最后是完整的Activity代码,还是贴出来吧,很简单。

package com.example.luntan;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MenuItem;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case R.id.writeArticle:Toast.makeText(this, "write", 0).show();break;default:Toast.makeText(this, "null", 0).show();break;}return super.onOptionsItemSelected(item);}}



更多相关文章

  1. Android(安卓)Action Bar学习(一)--基本介绍及使用
  2. Android群英传之Android绘图机制与处理技巧
  3. Flutter
  4. 如何不让EditText不获得焦点
  5. Android设置PreferenceCategory背景颜色的方法
  6. Android(安卓)ListView的多布局实现
  7. Android(安卓)Socket服务器 Servlet服务器
  8. Android如何在app中通过一个按钮直接跳转到的系统的权限设置页面
  9. android中自定义WebView显示网页或本地html文件

随机推荐

  1. 控件(2)toast
  2. 【Android】远程服务(Remote Service)的
  3. Android媒体解码MediaCodec,MediaExtract
  4. Ubuntu Android(安卓)开发jdk1.5和1.6之
  5. CactiPhone: 移动设备上查看Cacti
  6. Android(安卓)Activity中启动另一应用程
  7. android 图片Bitmap的旋转
  8. Android系列教程之五:Activity的生命周期
  9. Android单元测试—UI测试(Espresso)
  10. android RelativeLayout常用属性