Android27--Android之ActioBar

Android3.0之后,Google推出了ActionBar,使我们的操作栏更适于我们的视觉,虽然由于ActionBar的一些不灵活,目前差不多已经被Toolbar取代了,今天还是先介绍一些ActionBar

1.ActionBar的应用:

1.ActionBar 需要考虑使用哪一个版本;提供了 v7 的兼容版本(Android 2.1),和标准版本(Android 3.0 之后可用)
2. AppCompatActivity 或者是 ActionBarActivity 默认已经包含ActionBar的支持了
3. 通过 options menu,可以给ActionBar设置菜单和标题动作按钮
4. ActionBar 支持 Tab导航和下拉列表导航;通过代码来设置
5. ActionBar 使用 SearchView 可以实现在标题栏进行搜索
6. ActionBar 可以添加分享功能;

2.操作栏的设置

操作栏被分为适用于大多数应用程序四个不同的功能区。
这里写图片描述
1. App icon 2. View control 3. Action buttons 4.Action overflows

1.返回键

Google的规范:每一个Activity都会有有一个后退键, 除了主界面,我们如果设置App的icon时,可以直接将后退键的图标设置为我们项目的app icon.(一个捷径),系统会默认给他一个id(android.R.id.home)

ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            // 设置后退键是否显示
            actionBar.setDisplayHomeAsUpEnabled(true);
            // 设置后退键的图标
            actionBar.setHomeAsUpIndicator(R.mipmap.ic_launcher);
            // 去除标题栏的标题
            actionBar.setDisplayShowTitleEnabled(false);
        }

2.. Tab导航和下拉列表导航

为ActionBar设置 Tab导航和下拉列表导航,目前都已经过时,这里先不介绍.

3..搜索效果

设置放大镜的效果,一般我们都是让他点击跳转到一个搜索框
我们可以在布局中这样设置,

<!-- collapseActionView 代表 当前MenuItem 点击的时候能够显示或者隐藏一个ActionView -->
    <!-- V4包内部提供了SearchView的创建工具类,
        V7包 提供了 android.support.v7.widget.SearchView
     -->
   <item
        android:id="@+id/action_search"
        android:title="搜索"
        android:icon="@drawable/ic_action_search"
        app:showAsAction="always|collapseActionView"
        app:actionViewClass="android.support.v7.widget.SearchView"
        />

之后再布局中,我们就可以把它当做一个普通的menu项找到id, 进行设置

 // 3. v7包设置SearchView的方式
        View view = MenuItemCompat.getActionView(item);
        if(view != null){
            mSearchView = (SearchView) view;
            // 4. 设置 SearchView的查询回调接口
            mSearchView.setOnQueryTextListener(this);

            // 在搜索输入框没有显示的时候,点击Action,回调这个接口,并且显示输入框
            //searchView.setOnSearchClickListener();

            // 当自动补全的 内容被选中的时候,回调接口
            //searchView.setOnSuggestionListener();

            // 可以设置搜索的自动补全,或者实现搜索历史
            //mSearchView.setSuggestionsAdapter();

        }

  /**
     * 当用户在输入法中点击搜索按钮时,或者输入回车时,调用这个方法,发起实际的搜索功能
     * @param query
     * @return
     */
    @Override
    public boolean onQueryTextSubmit(String query) {

        Toast.makeText(SearchActivity.this, "Submit " + query, Toast.LENGTH_SHORT).show();

        mSearchView.clearFocus();

        return true;
    }

    /**
     * 每一次输入字符都会回调这个方法,实现搜索的联想功能
     * @param newText
     * @return
     */
    @Override
    public boolean onQueryTextChange(String newText) {

        Toast.makeText(SearchActivity.this, "Ch: " + newText, Toast.LENGTH_SHORT).show();

        return true;
    }

4.菜单的设置相关的属性

<item
            android:id="@+id/action_settings"
            android:title="设置"
            app:showAsAction="ifRoom"
            android:orderInCategory="2"
            />

相关属性的介绍:

menu item 的优先级属性
1..orderInCategory 属性:填写数字即可,数字会根据所有Action的值按照升序排列,数字 1 第一个显示,数字越大越在后面显示。
2..orderInCategory :没有设置这个属性的item始终按照xml的顺序在最前面,之后才是跟着有顺序的item
3..ActionBar 显示的顺序,先显示没有orderInCategory的菜单,之后才是有orderInCategory的菜单

showAsAction

1. showAsAction 指定的属性,不能够100%确保期望的效果,因为ActionBar显示在标题上面的按钮,显示效果依赖于屏幕的宽度;

2. always 是总是显示在标题栏上面,当按钮非常多,会把菜单项挤出去;

3. ifRoom: 代表,当ActionBar的宽度还有剩余,能够继续放置菜单,那么这个时候,当前菜单项可能能够显示在ActionBar的标题上面;
如果没有空间,那么当前的菜单就显示在 “三个点”代表的菜单项当中;对于有些手机,需要点 “Menu”按键,才会显示出来菜单。

4. never : 代表指定的Action永远不再ActionBar(标题栏)上面显示,默认的.

5. withText  当ActionBar空间足够,能够同时显示标题,图标的时候,就会自动显示标题;如果没有空间,那么不显示标题

关于Toolbar的设置将在下篇博文介绍

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值