企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
安卓SDK11.0版本以上就支持Action Bar了。所谓的Action Bar实际上就是代替以前的标题栏的存在,如果设置了那就会在Activity的顶部显示,我们可以在AndroidManifest.xml里面这样显示声明ActionBar:android:theme="@android:style/Theme.Holo" 一般情况下,我们需要在onCreateOptionsMenu里面把自定义的视图加载进去: ~~~ @Override public 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回调函数,下面是我处理的代码: ~~~ @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (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 { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public 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; } @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (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); } } ~~~