ActionBar的使用
发布日期:2021-06-30 18:38:24
浏览次数:3
分类:技术文章
本文共 5473 字,大约阅读时间需要 18 分钟。
使用ActionBar,需要3个步骤: 1、导入v7包,并与项目关联 2、继承ActionBarActivity 3、修改清单文件中的application的主题为android:theme="@style/Theme.AppCompat.XXX"/*================================================ActionBar的一些常用方法===========================================================*/ ActionBar actionBar = getSupportActionBar();// 得到actionBar actionBar.setLogo(R.drawable.ic_action_edit);// 设置logo,默认是logo优先 actionBar.setIcon(R.drawable.ic_launcher);// 设置icon,默认是logo优先 actionBar.setDisplayUseLogoEnabled(false);// 默认是true,默认是logo优先,若为false,则显示icon actionBar.setTitle("主标题"); actionBar.setSubtitle("副标题"); actionBar.setDisplayHomeAsUpEnabled(true);// 设置显示返回按钮 // 显示/隐藏title部分 actionBar.setDisplayShowTitleEnabled(true);// 默认是True,默认显示title // 显示/隐藏icon/logo部分 actionBar.setDisplayShowHomeEnabled(true);// 默认是true,默认显示icon/logo // 如果title和icon都隐藏了,那么对应的返回按钮也没有了/*================================================ActionBar中的按钮===========================================================*/加载要在ActionBar中显示的按钮: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu); } 对ActionBar的按钮设置点击事件,需要重写onOptionsItemSelected方法 @Override public 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注意: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显示搜索框objects = new ArrayList (); objects.add("主页"); objects.add("新闻"); objects.add("娱乐"); // 设置adapter ArrayAdapter adapter = new ArrayAdapter (this, android.R.layout.simple_list_item_1, objects); // 设置adapter和点击事件的处理 actionBar.setListNavigationCallbacks(adapter, new OnNavigationListener() { @Override public 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的导航模式改为Tab for (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的点击事件 // 未选中的时候 @Override public void onTabUnselected(Tab arg0, FragmentTransaction arg1) { } // 选中的时候 @Override public void onTabSelected(Tab arg0, FragmentTransaction arg1) { Toast.makeText(getApplicationContext(), tab.getText(), 0) .show(); } // 再次选中的时候 @Override public void onTabReselected(Tab arg0, FragmentTransaction arg1) { } }); actionBar.addTab(tab);//把创建并设置好的tab加到ActionBar中 } /*================================================ActionBar操作按钮部分===========================================================*/点击ActionBar的按钮后,在ActionBar中显示搜索框: 1、在menu目录中的ActionBar布局文件中添加一个按钮(item),加入2个属性(actionViewClass和showAsAction),这2个属性需要使用自定义空间 - 2、在activity中找到该探索按钮可以设置联想和对数据的处理方式 case R.id.action_search: //找到searchView SupportMenuItem smi = (SupportMenuItem) item;//android sdk里面的MenuItem,转换成v4包中的SupportMenuItem SearchView actionView = (SearchView) smi.getActionView(); Toast.makeText(getApplicationContext(), "action_search", 0).show(); break; 注意:有actionViewClass和showAsAction这2个属性之后,效果就已经出来了。/*================================================splite模式===========================================================*/把tab导航放到界面最下方,在清单文件中设置该Activity即可:
/*================================================ActionBar的ActionMode模式===========================================================*/效果:例如长按某段文字后,界面上方出现复制、粘贴等按钮使用:在ActionBarActivity中有startSupportActionMode方法,可以直接呼出ActionMode startSupportActionMode(new Callback() { @Override public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) { return false; } @Override public void onDestroyActionMode(ActionMode arg0) { } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) {//创建ActionMode getMenuInflater().inflate(R.menu.actionmode, menu);//加载ActionMode要显示的布局,文件的位置与编写与菜单的布局文件一致 return true;// 为true才创建,为False被忽略(不显示) } @Override public 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(菜单)的布局文件===========================================================*/编写如下:
转载地址:https://linqiarui.blog.csdn.net/article/details/50764626 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月26日 08时34分44秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ACM 2017 南宁区域赛 Rake it in(对抗搜索)
2019-04-30
CodeForces - 931B World Cup (思维 模拟)
2019-04-30
CodeForces - 996D Suit and Tie (暴力)
2019-04-30
ACM 2017 香港区域赛 E - Base Station Sites(二分)
2019-04-30
ACM 2018 青岛区域赛 J-Books (模拟)
2019-04-30
ACM 2016 沈阳区域赛 E - Counting Cliques (dfs)
2019-04-30
ACM 2017 北京区域赛 J-Pangu and Stones(区间dp)
2019-04-30
HDU - 5643 King's Game (约瑟夫环变式)
2019-04-30
UVA - 1452 Jump (约瑟夫环变式)
2019-04-30
POJ - 3517 And Then There Was One (约瑟夫环变式)
2019-04-30
HDU - 2068 RPG的错排 (错排+组合数)
2019-04-30
CodeForces 591C Median Smoothing(思维 模拟)
2019-04-30
升级yosemite后java出错的解决
2019-04-30
开发人员与测试人员, 道不同也相谋
2019-04-30
Thirdparty之CrashRptProbe, 查询程序奔溃的利器
2019-04-30
基于VTK实现面绘制(SR)和体绘制(VR)的基本代码
2019-04-30
Visual Studio之RelWithDebInfo模式,“被忽视”的编译模式
2019-04-30