一.ActionBar:
ActionBar替代了传统的位于设备屏幕顶部的标题栏,它显示应用程序的图标和活动名称。我们还可以向ActionBar中添加动作项,动作项是应用程序中经常执行的一些操作快捷方式。
代码实现添加:
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. super.onCreateOptionsMenu(menu); CreateMenu(menu); return true; } private boolean MenuChoice(MenuItem item){ switch(item.getItemId()){ case 0: toastPrint("点击了一动作项"); return true; case 1: toastPrint("点击了二动作项"); return true; case 2: toastPrint("点击了三动作项"); return true; case 3: toastPrint("点击了四动作项"); return true; case 4: toastPrint("点击了五动作项"); return true; } return false; } public void toastPrint(String str){ Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); } @Override public boolean onOptionsItemSelected(MenuItem item) { return MenuChoice(item); } private void CreateMenu(Menu menu){ MenuItem mn1 = menu.add(0,0,0," 一 "); { mn1.setIcon(R.drawable.ic_launcher); mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); } MenuItem mn2 = menu.add(0,1,1," 二 "); { mn1.setIcon(R.drawable.ic_launcher); mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); } MenuItem mn3 = menu.add(0,2,2," 三 "); { mn1.setIcon(R.drawable.ic_launcher); mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); } MenuItem mn4 = menu.add(0,3,3," 四 "); { mn1.setIcon(R.drawable.ic_launcher); mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); } MenuItem mn5 = menu.add(0,4,4," 五 "); { mn1.setIcon(R.drawable.ic_launcher); mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); } } }
menu.add(参数1,参数2,参数3,参数4);
参数1:int类型group ID参数代表组概念几菜单项归组便更好组方式管理菜单按钮。
参数2:int类型item ID参数代表项目编号参数非常重要item ID对应menu选项面使用菜单时候靠item ID来判断使用哪选项。
参数3:int类型order ID参数代表菜单项显示顺序默认0表示菜单显示顺序按照add显示顺序来显示。
参数4:String类型title参数表示选项显示文字。
界面显示:
点击menu按钮:
前面的例子中在菜单项中没有显示菜单的文本内容,如果想要为动作项同时显示图标和文本,可以使用‘ | ‘操作符加上MenuItem.SHOW_AS_ACTION_WITH_TEXT常量:
示例:
MenuItem mn1 = menu.add(0,0,0," 一 "); { mn1.setIcon(R.drawable.ic_launcher); mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM|MenuItem.SHOW_AS_ACTION_WITH_TEXT); }
常用显示类型:
MenuItem.SHOW_AS_ACTION_IF_ROOM 有位置才显示
MenuItem.SHOW_AS_ACTION_ALWAYS 始终显示
MenuItem.SHOW_AS_ACTION_NEVER 永不显示
MenuItem.SHOW_AS_ACTION_WITH_TEXT 显示字符串
当我们有时候应用程序图标设置点击事件:
这时就需要修改MenuChoice()方法:
private boolean MenuChoice(MenuItem item){ switch(item.getItemId()){ case android.R.id.home: toastPrint("应用图标"); return true; case 0: toastPrint("点击了一动作项"); return true; case 1: toastPrint("点击了二动作项"); return true; case 2: toastPrint("点击了三动作项"); return true; case 3: toastPrint("点击了四动作项"); return true; case 4: toastPrint("点击了五动作项"); return true; } return false; }
还需要在onCreate()中添加:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar bar = getActionBar(); bar.setDisplayHomeAsUpEnabled(true); }
setDisplayHomeAsUpEnabled(true)此方法设置程序图标可以点击。不设置则点击不了。
public class HelloWorld extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hello_word); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.hello_word, menu); return true; } }
private boolean MenuChoice(MenuItem item){ switch(item.getItemId()){ case android.R.id.home: toastPrint("应用图标"); Intent i = new Intent(this,HelloWorld.class); startActivity(i); return true; case 0: toastPrint("点击了一动作项"); return true; case 1: toastPrint("点击了二动作项"); return true; case 2: toastPrint("点击了三动作项"); return true; case 3: toastPrint("点击了四动作项"); return true; case 4: toastPrint("点击了五动作项"); return true; } return false; }
当点击应用程序图标后会自动跳转到HelloWorld。