ActionBar的搜索框设置

1. 首先必须引入 v7 包,并且设置 Activity 的主题为 v7 包的 AppCompat 主题
android:theme="@style/Theme.AppCompat.Light"

2. 创建 res/menu/main_menu.xml 并添加 item 为
注意:
  • 红色加粗的需要特别注意,使用 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);// 找到 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);

其他两个分别是设置:是否显示 Home 按钮,是否显示标题
2. 在 ActionBar 的 setDisplayOptions 增加位运算标记
ActionBar actionBar = getSupportActionBar();actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME| ActionBar.DISPLAY_SHOW_TITLE|ActionBar.DISPLAY_HOME_AS_UP );

这种方法和第一种基本类似,是 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
        
注意
  • android:parentActivityName 父Activity
  • android:value 父Activity的全类名
  • meta-data 是为了兼容低版本
效果图如下




遇到的坑

1. 导入 v7 包遇到很多错误
将 v7 包TargetSDKVersion改成对应的api(往往是最新的api),如果被导入其他项目,则以其他项目的TargetSDKVersion为准

2. ActionBarActivity 被废弃
用 AppCompatActivity 替代















更多相关文章

  1. Notification学习
  2. Notification详解
  3. android studio慢慢熟悉-好用的 设置 查找框
  4. 程序猿媛一:Android滑动翻页+区域点击事件
  5. SpannableStringBuilder 和 SpannableString
  6. Android复写BaseAdapter并显示ListView视图
  7. Android实现图片轮播切换实例代码
  8. Android(安卓)NDK编译选项设置
  9. Android竖式SeekBar实现及demo

随机推荐

  1. 还玩什么ZAO换脸软件,首例AI诈骗案已经诞
  2. 地外文明现身?现实版中国「红岸基地」首次
  3. Java程序跑的快,全要靠线程带
  4. 某乎用户学历大曝光:世界500强CEO某乎占49
  5. 号称中国版ins的微博新社交App「绿洲」,上
  6. 2019年苹果发布会:没有5G但更便宜的iPhone
  7. 致死事件大爆发,美国颁布紧急禁令:「电子烟
  8. Java中BIO,NIO,AIO总结
  9. Flash是真的要退役了,一代热门技术就此终
  10. 同为程序员,当你在为996挣扎的时候,00后学