1、三、添加ActionBar的Item1、通过程序动态布局23456789101112131415161718192021222324252627282930313233343536package com.xys.actionbar;import android.os.Bundle;import android.app.ActionBar;import android.app.Activity;import android.view.Menu;import android.view.MenuItem;public class MainActivityextends Activity Action
2、Bar actionBar;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);actionBar=getActionBar();actionBar.show();public boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is pr
3、esent.super.onCreateOptionsMenu(menu);/添加菜单项MenuItem add=menu.add(0,0,0,add);MenuItem del=menu.add(0,0,0,delMenuItem save=menu.add(0,0,0,save/绑定到ActionBaradd.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);del.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);save.setShowAsAction(MenuItem.SHOW_AS_AC
4、TION_IF_ROOM);return true;效果如图:2、通过Menu.xml文件布局menu/menu.xmlxml version=1.0 encoding=utf-8menu xmlns:android= itemandroid:id=+id/item1orderInCategory=1showAsAction=ifRoom|withTexttitle=string/save/2string/edit/menu程序:public class ActionBarXMLActivity/* Called when the activity is first created. */pu
5、blic void onCreate(Bundle savedInstanceState) setContentView(R.layout.main);public boolean onCreateOptionsMenu(Menu menu)MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.optionsmenu, menu);效果和上面一样四、关于菜单项过多当菜单项过多时,Android会分两种情况进行处理:1、手机有MENU实体键:则按下Menu键后会显示剩余菜单项2、手机没有MENU实体键:则会在最左边显示
6、一个Action OverFlow按钮,按下后会显示剩余项菜单,如图:五、使用带字的Action Item1、Action item 默认格式是如果菜单项含字和图标的话,只显示图标2、如果想要显示字的效果,在xml里如下设置: 或者在代码里调用setShowAsAction():setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM)六、ActionBar的单击事件1、ActionBar中一个菜单项(即Action item)的触发像以前版本中的活动菜单回调方法(onOptionsItemSelected()一样。2、当用户选择一个Fragment的菜单
7、项时,首先会调用Activity的onOptionsItemSelected()方法,如果该方法返回false,则调用Fragment实现的onOptionsItemSelected()方法。public boolean onOptionsItemSelected(MenuItem item) / TODO Auto-generated method stubswitch (item.getItemId() case R.id.menu_save:Toast.makeText(getApplicationContext(),menu_save,0).show();break;case andr
8、oid.R.id.home:Intent intent =new Intent(this, MainActivity.class);intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);android.R.id.home0).show();default:return super.onOptionsItemSelected(item);七、应用的图标1、默认情况下,应用图标在ActionBar的左侧2、当用户点击应用bar的时候,系统会调用你的Ac
9、tivity里面的onOptionsItemSelected() 方法里面的Android.R.id.Home ID(你的主ID)里定义的事件。我们可以重写这个方法,添加一个条件执行该行为:让它跳转到这个应用的主Activity而不是返回的主屏幕。3、如果选择返回应用的主activity,最好的方式是在创建的Intent中添加FLAG_ACTIVITY_CLEAR_TOP这个标签。使用这个FLAG_ACTIVITY_CLEAR_TOP标签,如果应用的主Activity已经在activity栈中存在,所有在其上的activity都会被销毁,然后主activity会到栈顶,而不用创建主Activi
10、ty的的新实例。public boolean onOptionsItemSelected(MenuItem item)switch (item.getItemId()intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);当我们想实现用户点击ActionBar 图标后返回前一个activity,可以通过在Actionbar设置setDisplayHomeAsUpEnabled(true) 来实现。如图:八、添加活动视图1、ActionBar中还可以添加很多其他的视图我们也可以添加一个视图作为一个Action Item.我们可以通过在xml元素的andro
11、id:actionLayout属性制定我们希望现实布局资源的ID(例如layout/mysearchview)我们可以选择添加android:actionViewClass属性分配与完全限定的类名描述我们想要显示的视图(例如android.widget.SearchView)import android.view.MenuInflater;protected void onStart() super.onStart();ActionBar actionBar =this.getActionBar();actionBar.setDisplayHomeAsUpEnabled(true);infla
12、ter.inflate(R.menu.main, menu);这样我们就添加了一个Search的视图,效果如下:2、其他ItemActionBar的Item会分有好几个种类,分别有1).普通类型(带图片带文字)。2).分享类型。3).可拓展类型。4).列表类型。+id/menu_collapseactionLayout=layout/collapsibleviewicon=drawable/searchifRoom|collapseActionViewstring/menu_search/item+id/menu_shareactionProviderClass=android.widget.
13、ShareActionProviderenabled=trueifRoomstring/menu_share+id/menu_settingsdrawable/save100string/menu_settings+id/menu_savestring/menu_savemenu+id/action_sort_sizedrawable/ic_menu_sort_by_sizeonClick=onSort+id/action_sort_alphadrawable/ic_menu_sort_alphabeticallymenu_save Item 就是一个最普通的带文字带图片的Item。能否显示在
14、ActionBar的Item主要看android:这个属性。看menu_sitting 就永远不会显示出来,只有在按menu时候会显示。谷歌文档中提供android:showAsAction总共有五个属性。never:永远不会显示。只会在溢出列表中显示。ifRoom:会显示在Item中,但是如果已经有4个或者4个以上的Item时会隐藏在溢出列表中。always:无论是否溢出,总会显示。withText:Title会显示。collapseActionView:可拓展的Item。3、可分享的Item看上面代码片段 menu_share 按钮就是一个可分享的Item。表示这个Item是个分享Item
15、在java代码中进行实现:/ 添加分享按钮的事件/ 4.0以下没有ShareActionProviderMenuItem menuItem_share = menu.findItem(R.id.menu_share);/ Get the provider and hold onto it to set/change the share intent.mShareActionProvider = (ShareActionProvider) menuItem_share.getActionProvider();/ If you use more than one ShareActionProvid
16、er, each for a different/ action,/ use the following line to specify a unique history file for each one./ mShareActionProvider.setShareHistoryFileName(custom_share_history.xml/ Set the default share intentmShareActionProvider.setShareIntent(getDefaultShareIntent();private Intent getDefaultShareInten
17、t() Log.i(TAG,getDefaultShareIntentnew Intent(Intent.ACTION_SEND);intent.setType(text/plainintent.putExtra(Intent.EXTRA_SUBJECT,小清新短信闪intent.putExtra(Intent.EXTRA_TEXT,小清新短信闪 1.0intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);return intent;4、可拓展的Item看到那个放大镜了,就是一个可拓展试的Item,看xml 中的 menu_collapse。他有俩个属性是android: android: 是点item后拓展成的ViewcollapseActionView代表他是一个可拓展的ItemButton btnn;EditText editText;private ShareActionProvider mShareActionProvider;publi
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1