v7 包下 ActionBar 的一些基本使用
来源:互联网 发布:飓风营救 知乎 编辑:程序博客网 时间:2024/06/05 19:12
ActionBar的搜索框设置
1. 首先必须引入 v7 包,并且设置 Activity 的主题为 v7 包的 AppCompat 主题
android:theme="@style/Theme.AppCompat.Light"
2. 创建 res/menu/main_menu.xml 并添加 item 为
<item android:id="@+id/action_search" android:icon="@android:drawable/ic_menu_search" android:title="@string/action_search" app:showAsAction="always" app:actionViewClass="android.support.v7.widget.SearchView" />
注意:
- 红色加粗的需要特别注意,使用 v7 包的 ActionBar, 那么 item 的 actionViewClass 和 showAsAction 属性的命名空间必须来自 v7
- showAsAction 的值必须是 v7 包中 SearchView 的全类名 android.support.v7.widget.SearchView ,而不是 android.widget.SearchView
3. 回到 Activity,分别实现 onCreateOptionsMenu 方法 和 onOptionsItemSelected方法
public boolean onCreateOptionsMenu(Menu menu) {// 创建菜单MenuInflater menuInflater = getMenuInflater();menuInflater.inflate(R.menu.main, menu);<span style="white-space:pre"></span>// 找到 SearchView 并设置监听SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();searchView.setOnQueryTextListener(this);return true;}注意
- SearchView 必须是 v7 包的下的
实现效果如下:
ActionBar 返回按钮的显示
显示返回按钮,只需要设置 ActionBar 的 DISPLAY_HOME_AS_UP 属性为 true。有三种实现方式。
1. 在 ActionBar 的 setDisplayOptions 增加标记
ActionBar actionBar = getSupportActionBar();actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_HOME_AS_UP);
2. 在 ActionBar 的setDisplayOptions 增加位运算标记
ActionBar actionBar = getSupportActionBar();actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME| ActionBar.DISPLAY_SHOW_TITLE|<span style="font-family: Arial, Helvetica, sans-serif;">ActionBar.DISPLAY_HOME_AS_UP</span> );
这种方法和第一种基本类似,是 Android ApiDemos 提供的, 想必更高效
3. 直接设置 ActionBar 的
int change = actionBar.getDisplayOptions() ^ ActionBar.DISPLAY_HOME_AS_UP;actionBar.setDisplayOptions(change, ActionBar.DISPLAY_HOME_AS_UP);最简单最直接,推荐使用
ActionBar 返回按钮的动作实现
在设置完了 ActionBar 返回按钮的显示后,我们需要设置其动作,这里也提供两种方法。
1. 重写 onOptionsItemSelected 监听 android.R.id.home
@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int itemId = item.getItemId();switch (itemId) {case android.R.id.home:finish();break;}return super.onOptionsItemSelected(item);}2. 在 AndroidMenufest.xml 配置 Activity
<activity android:name=".DetailActivity" android:label="@string/app_detail" android:parentActivityName="cn.ifavor.googleplay2.MainActivity" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-dataandroid:name="android.support.PARENT_ACTIVITY"android:value="cn.ifavor.googleplay2.MainActivity" /></activity>注意
- android:parentActivityName 父Activity
- android:value 父Activity的全类名
- meta-data 是为了兼容低版本
效果图如下
遇到的坑
1. 导入 v7 包遇到很多错误将 v7 包TargetSDKVersion改成对应的api(往往是最新的api),如果被导入其他项目,则以其他项目的TargetSDKVersion为准
2. ActionBarActivity 被废弃
2. ActionBarActivity 被废弃
用 AppCompatActivity 替代
0 0
- v7 包下 ActionBar 的一些基本使用
- 使用v7包,actionbar的问题
- V7下的ActionBar
- 【安卓小笔记】v7包下SearchView的基本使用
- Android Support V7 包中 ActionBar的使用
- 使用V7包的一些问题解决方法
- 如何使用V7包中ActionBar
- Android Support V7 包中 ActionBar的使用 (2) 分离式 ActionBar
- Android Support V7 包中 ActionBar的使用 (3) 为ActionBar添加Up导航功能
- ActionBar-在Google官方android-support-v7包中的一些使用
- 使用V7包后,设置ActionBar的title等的属性
- 在V7包中,不能进行actionbar的主题的修改,可以在使用
- Android Support V7 包中 ActionBar的使用 (1) 添加Action Item
- Android Support V7 包中 ActionBar的使用 (1) 添加Action Item
- 安卓v7包中的RecyclerView的基本使用
- [教程]如何使用V7包中ActionBar(Eclipse版)
- [教程]如何使用V7包中ActionBar(Eclipse版)
- 如何使用V7包中ActionBar(Eclipse版)
- 视频会议系统终端的分类及特点
- POJ3580 SuperMemo(Splay)
- Web性能压力测试工具之ApacheBench(ab)详解
- PHP高并发高负载系统架构
- Eclipse中将安卓工程改装成PhoneGap(cordova)工程
- v7 包下 ActionBar 的一些基本使用
- CvMat, Mat, IplImage互相转换
- 用PhoneGap Build打包ask和ipa软件安装包
- 安卓计算器
- Cocos2d-x使用iPhone的多点触控实现双机游戏
- 文章标题
- oracle解锁表
- 使用过的CSS小技巧笔记
- Web报表工具FineReport中JavaScript的使用