一.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。