ActionBar的使用

来源:互联网 发布:js将集合转换为数组 编辑:程序博客网 时间:2024/06/05 17:18
使用ActionBar,需要3个步骤:
1、导入v7包,并与项目关联
2、继承ActionBarActivity
3、修改清单文件中的application的主题为android:theme="@style/Theme.AppCompat.XXX"


/*================================================ActionBar的一些常用方法===========================================================*/ActionBar actionBar = getSupportActionBar();// 得到actionBaractionBar.setLogo(R.drawable.ic_action_edit);// 设置logo,默认是logo优先actionBar.setIcon(R.drawable.ic_launcher);// 设置icon,默认是logo优先actionBar.setDisplayUseLogoEnabled(false);// 默认是true,默认是logo优先,若为false,则显示iconactionBar.setTitle("主标题");actionBar.setSubtitle("副标题");actionBar.setDisplayHomeAsUpEnabled(true);// 设置显示返回按钮// 显示/隐藏title部分actionBar.setDisplayShowTitleEnabled(true);// 默认是True,默认显示title// 显示/隐藏icon/logo部分actionBar.setDisplayShowHomeEnabled(true);// 默认是true,默认显示icon/logo// 如果title和icon都隐藏了,那么对应的返回按钮也没有了/*================================================ActionBar中的按钮===========================================================*/加载要在ActionBar中显示的按钮:@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return super.onCreateOptionsMenu(menu);}对ActionBar的按钮设置点击事件,需要重写onOptionsItemSelected方法@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case android.R.id.home://此id是固定的,得到ActionBar的返回按钮finish();break;default:break;}return super.onOptionsItemSelected(item);}/*================================================ActionBar的导航模式===========================================================*/ActionBar的导航模式有2种:1、list模式actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);//将ActionBar的导航模式改为List// 初始化数据final List<String> objects = new ArrayList<String>();objects.add("主页");objects.add("新闻");objects.add("娱乐");// 设置adapterArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, objects);// 设置adapter和点击事件的处理actionBar.setListNavigationCallbacks(adapter,new OnNavigationListener() {@Overridepublic boolean onNavigationItemSelected(int itemPosition,long itemId) {Toast.makeText(getApplicationContext(),"选中了" + objects.get(itemPosition), 0).show();return false;}});2、tab模式actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//将ActionBar的导航模式改为Tabfor (int i = 0; i < 5; i++) {final Tab tab = actionBar.newTab();//创建一个新的tab// 设置文字tab.setText("tab1" + i);//对tab设置显示文本// 设置图标tab.setIcon(R.drawable.ic_action_call);//设置tab显示的icon// tab的点击事件tab.setTabListener(new TabListener() {//设置tab的点击事件// 未选中的时候@Overridepublic void onTabUnselected(Tab arg0, FragmentTransaction arg1) {}// 选中的时候@Overridepublic void onTabSelected(Tab arg0, FragmentTransaction arg1) {Toast.makeText(getApplicationContext(), tab.getText(), 0).show();}// 再次选中的时候@Overridepublic void onTabReselected(Tab arg0, FragmentTransaction arg1) {}});actionBar.addTab(tab);//把创建并设置好的tab加到ActionBar中}/*================================================ActionBar操作按钮部分===========================================================*/点击ActionBar的按钮后,在ActionBar中显示搜索框:1、在menu目录中的ActionBar布局文件中添加一个按钮(item),加入2个属性(actionViewClass和showAsAction),这2个属性需要使用自定义空间<item xmlns:itheima="http://schemas.android.com/apk/res-auto"itheima:actionViewClass="android.support.v7.widget.SearchView"itheima:showAsAction="collapseActionView" />2、在activity中找到该探索按钮可以设置联想和对数据的处理方式case R.id.action_search://找到searchViewSupportMenuItem smi = (SupportMenuItem) item;//android sdk里面的MenuItem,转换成v4包中的SupportMenuItemSearchView actionView = (SearchView) smi.getActionView();Toast.makeText(getApplicationContext(), "action_search", 0).show();break;注意:有actionViewClass和showAsAction这2个属性之后,效果就已经出来了。/*================================================splite模式===========================================================*/把tab导航放到界面最下方,在清单文件中设置该Activity即可:<activityandroid:name="com.itheima.actionbar.SplitActivity"android:uiOptions="splitActionBarWhenNarrow" ><meta-dataandroid:name="android.support.UI_OPTIONS"android:value="splitActionBarWhenNarrow" /></activity>/*================================================ActionBar的ActionMode模式===========================================================*/效果:例如长按某段文字后,界面上方出现复制、粘贴等按钮使用:在ActionBarActivity中有startSupportActionMode方法,可以直接呼出ActionModestartSupportActionMode(new Callback() {@Overridepublic boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {return false;}@Overridepublic void onDestroyActionMode(ActionMode arg0) {}@Overridepublic boolean onCreateActionMode(ActionMode mode, Menu menu) {//创建ActionModegetMenuInflater().inflate(R.menu.actionmode, menu);//加载ActionMode要显示的布局,文件的位置与编写与菜单的布局文件一致return true;// 为true才创建,为False被忽略(不显示)}@Overridepublic boolean onActionItemClicked(ActionMode mode, MenuItem item) {//对布局文件中的按钮设置点击事件switch (item.getItemId()) {case R.id.action_mode_1:Toast.makeText(getApplicationContext(), "action_mode_1", 0).show();break;case R.id.action_mode_2:Toast.makeText(getApplicationContext(), "action_mode_2", 0).show();break;case R.id.action_mode_3:Toast.makeText(getApplicationContext(), "action_mode_3", 0).show();break;default:break;}return false;}});/*================================================menu(菜单)的布局文件===========================================================*/编写如下:<menu xmlns:android="http://schemas.android.com/apk/res/android" >    <item        xmlns:itheima="http://schemas.android.com/apk/res-auto"        android:id="@+id/action_search"        android:icon="@drawable/ic_action_search"        android:orderInCategory="100"        android:title="搜索"        itheima:actionViewClass="android.support.v7.widget.SearchView"        itheima:showAsAction="collapseActionView"/>    <item        xmlns:itheima="http://schemas.android.com/apk/res-auto"        android:id="@+id/action_settings2"        android:icon="@drawable/ic_action_mail"        android:orderInCategory="100"        android:title="@string/action_settings"        itheima:showAsAction="always"/></menu>




注意:showAsAction和actionViewClass需要自定义的命名空间,如:xmlns:itheima="http://schemas.android.com/apk/res-auto",只要记得这样写就可以(itheima可以随便更换)
showAsAction的值:
always(一直显示,不管ActionBar的空间有余)
never(不显示,也不在更多按钮中显示)
ifRoom(有空间就显示,没空间就放到更多按钮中显示)
withText(显示时把title一起显示出来)
actionViewClass的值(到v7包的widget中找):
android.support.v7.widget.SearchView:在ActionBar显示搜索框
0 0
原创粉丝点击