当前位置: 代码迷 >> Android >> android基础入门AcitonBar使用(七)
  详细解决方案

android基础入门AcitonBar使用(七)

热度:44   发布时间:2016-04-28 06:28:22.0
android基础入门AcitonBar使用(7)

一.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);		}		     } 	}


onCreateOptionsMenu()方法,为ActionBar添加动作项。调用了CreateMenu()方法来显示一个菜单项列表,为了使菜单项显示为动作项,使用MenuItem.SHOW_AS_ACTION_IF_ROOM常量调用其setShowAsAction()方法,这是告知android设备上如果ActionBar上有空间,将该菜单项显示为一个动作项,当用户点击一个菜单项时,onOptionsItemSelected()方法被调用,然后通过MenuChoice()方法来检测那个菜单项被点击输出提示信息。

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)此方法设置程序图标可以点击。不设置则点击不了。





我们也可以通过点击图标来跳转到其它Activity:
在本个例子中在创建一个Activity,名称为HelloWorld.java,不添加任何内容,只有一个TextView控件显示。
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;	}}
修改MenuChoice()方法:
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。
界面显示:



  相关解决方案