ActionBar笔记
来源:互联网 发布:盐为什么国家控制知乎 编辑:程序博客网 时间:2024/06/08 17:31
Action Bar
介绍
- Action Bar 是Google 在Android 3.0之后推出的一种全新用户操作方式
- 目的是用来替换掉菜单按键功能,长按操作功能,提供一种全新的操作体验
ActionBar的组成
- 应用的图标标题部分:包含了 图标,主标题,副标题,回退部分
- 导航模式部分:这里显示的是导航模式中的List(导航模式有三种,标准,list,tab)
- Action button 部分: 用来响应用户的点击事件
- 溢出菜单部分:如果Action button拜访不下去了,会在此处显示
ActionBar 低版本的支持
- 导入Android Support V7 library
- 将Activity 继承 ActionBarActivity
- 给Activity 设置theme,主题需要是v7下的@style/Theme.AppComp.XXX
ActionBar标题图标部分
用来显示标题和回退的
相关Api的使用
// 获取ActionBar mActionBar = getSupportActionBar(); mActionBar.setTitle("MainTitle");// 设置主title部分 mActionBar.setSubtitle("SubTitle");// 设置子title部分 mActionBar.setIcon(R.drawable.ic_launcher);// 设置应用图标 mActionBar.setDisplayShowTitleEnabled(true);// 设置菜单 标题是否可见 mActionBar.setDisplayShowHomeEnabled(true);// 设置应用图标是否 mActionBar.setDisplayUseLogoEnabled(false);// 设置是否显示Logo优先 mActionBar.setDisplayHomeAsUpEnabled(true);// 设置back按钮是否可见
ActionBar的导航模式
- 标准模式。默认情况下就是标准模式
List模式
通过ActionBar设置导航模式
// actionBar的导航模式---ListmActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
在List模式下设置数据的适配以及监听
// 初始化数据 final List<String> objects = new ArrayList<String>(); objects.add("主页"); objects.add("新闻"); objects.add("娱乐"); // 创建adapter ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, objects); // 创建监听 OnNavigationListener listener = new OnNavigationListener() { @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { Toast.makeText(getApplicationContext(), objects.get(itemPosition) + "", Toast.LENGTH_SHORT).show(); return false; } }; // 给ActionBar设置List导航模式下的数据适配和监听 mActionBar.setListNavigationCallbacks(adapter, listener);
Tab模式
通过ActionBar设置Tab模式
// actionBar的导航模式---TABmActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
在Tab模式下设置数据的适配以及监听
final List<Tab> mTabs = new ArrayList<ActionBar.Tab>(); for (int i = 0; i < 3; i++) { //创建tab Tab tab = mActionBar.newTab(); tab.setText("tab" + (i + 1)); tab.setIcon(R.drawable.ic_launcher); mTabs.add(tab); //设置Tab的监听 tab.setTabListener(new TabListener() { @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { Toast.makeText(getApplicationContext(), tab.getText() + "取消选中了", Toast.LENGTH_SHORT).show(); } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { Toast.makeText(getApplicationContext(), tab.getText() + "选中了", Toast.LENGTH_SHORT).show(); } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { Toast.makeText(getApplicationContext(), tab.getText() + "重新选中了", Toast.LENGTH_SHORT).show(); } }); //将tab添加到actionBar中 mActionBar.addTab(tab); }
Action button的相关操作
创建Action button
复写 activity 的 onCreateOptionsMenu()方法
@Overridepublic boolean onCreateOptionsMenu(Menu menu){ MenuInflater inflater = getMenuInflater(); // 将布局挂载到menu上 inflater.inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu);}
给menu创建对应的menu 的xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:heima="http://schemas.android.com/apk/res-auto" > <item android:icon="@drawable/ic_action_call" android:orderInCategory="100" android:title="呼叫" heima:showAsAction="ifRoom"/> <item android:icon="@drawable/ic_action_cancel" android:orderInCategory="100" android:title="取消" heima:showAsAction="ifRoom"/></menu>
低版本适配的说明:
- 在menu对应的xml文件的根节点,需要声明 自定义命名空间:
code
xmlns:heima="http://schemas.android.com/apk/res-auto"
- item中的属性 showAction 命名空间需要设置成自定义的
ShowAction的取值说明:
- always : 总是显示
- ifroom : 如果放的下去,就显示(溢出菜单)
- never : 从不显示
- withText: 和文本一起显示
- collapseActionView: 折叠显示
Menu菜单的类型:
- Group菜单
- 子菜单
响应Action Button 事件
- 复写onOptionsItemSelected()响应item事件
@Overridepublic boolean onOptionsItemSelected(MenuItem item){ return super.onOptionsItemSelected(item);}
- 复写onOptionsItemSelected()响应item事件
ActionBar Split显示
- 在清单文件中给Activity添加属性
xml
android:uiOptions="splitActionBarWhenNarrow"
低版本支持时需要在Activity中添加meta元数据的支持xml
<meta-data
android:name="android.support.UI_OPTIONS"
android:value="splitActionBarWhenNarrow" />
Action Mode
呼出Action Mode功能
startActionMode(Callback);
低版本中
startSupportActionMode(Callback);
Action Mode的回调(Callback)
// 创建action mode时的回调@Overridepublic boolean onCreateActionMode(ActionMode mode, Menu menu){ getMenuInflater().inflate(R.menu.action_mode, menu); // 返回true说明有action mode return true;}// 准备开始起时的回调@Overridepublic boolean onPrepareActionMode(ActionMode mode, Menu menu){ // TODO Auto-generated method stub return true;}// action mode中的item被点击时的回调@Overridepublic boolean onActionItemClicked(ActionMode mode, MenuItem item){ return false;}//action mode 销毁时的回调@Overridepublic void onDestroyActionMode(ActionMode mode){ Toast.makeText(this, "关闭了", Toast.LENGTH_SHORT).show();}
0 0
- ActionBar笔记
- ActionBar 笔记
- ActionBar笔记
- 学习笔记 android actionbar
- 笔记57--ActionBar一
- 笔记58--ActionBar二
- 学习ActionBar笔记
- ActionBar 笔记整理
- Android笔记 标题栏ActionBar
- Android ActionBar使用笔记
- Android ActionBar学习笔记
- Android ActionBar学习笔记
- ActionBar学习笔记
- 学习笔记 ActionBar
- ActionBar、Menu笔记
- Android笔记 actionbar学习
- Android ActionBar Tabs学习笔记
- Android ActionBar Item学习笔记
- C#调用Winrar实现解压缩
- 设计模式之【工厂模式】
- 【整理】数制
- ISP Pipeline的关键模块之Demosaic(二)
- HDU3342---Legal or Not
- ActionBar笔记
- 可扩展的android重打包工具
- leetcode 日经贴,Cpp code -Combination Sum III
- iOS 将字典转成json格式字符串
- Sparta
- 1014. Waiting in Line (30)
- Spring TestContext简介
- Android draw9path工具的使用(9格图片)
- 内在美