Action Bar

 介绍:

Action Bar是一种新増的导航栏功能,在Android3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用户动作、界面导航等功能。使用ActionBar的好处是,它可以给提供一种全局统一的UI界面,使得用户在使用任何一款软件时都懂得该如何操作,并且ActionBar还可以自动适应各种不同大小的屏幕.


用处及目的:

  1.  提供一个用于识别应用程序的标示和用户的位置的专用空间。

         这个空间的左边是应用的图标或logo,以及Activity的标题。但是,如果是像当前选择的标签这样的标识当前View对象的导航标签,你可以选择删除Activity的标题。

        2.  在不同的应用程序之间提供一致的导航和视觉体验。

        Action bar提供了用于fragment间切换的内置导航标签。它还提供了一个用于替换导航模式或优化当前视觉效果(如按照不同条件排序的列表)的下拉列表。

        3.  突出Activity的关键操作(如“搜索”、“创建”、“共享”等),并且在可预见的方法内给用户提供快捷的访问。

       对于关键的用户操作,你能够通过把选项菜单项作为操作项直接放到操作栏中,从而提供快捷的访问。操作项目还能提供一个操作窗口,这个窗口给更直接的操作行为提供一个嵌入的窗口部件。没有改进成操作项的菜单项在溢出菜单中还是有效的,用户既可以使用设备上的菜单按钮(设备上有按钮的时候),也可以使用操作栏中的溢出菜单按钮(当设备上不包含菜单按钮时)来显示这些操作项目。

      上面的总结一下:Action bar就是替换3.0以前的tittle bar和menu。



接下来一起来学习下这个控件吧。


一:修改Action Bar标题

    最简单的一种方式,在清单文件中,看代码


<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"   //更改项目图标
    android:label="@string/app_name"     //更改名称
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >

 二 :删除Action bar

第一种方法 : <activity android:theme="@android:style/Theme.Holo.NoActionBar">  

第二种方法:使用Action bar的 hide()方法,如下:
  1. ActionBar actionBar = getActionBar();  
  2. actionBar.hide(); 


三 :添加按钮

ActionBar可以根据需要添加文字或者是图标,过多的话会隐藏在overflow按钮里面(右面的三点)

当Activity启动时,调用onCreateOptionsMenu来取出所有按钮,加载menu资源,res-menu


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_1"
        android:icon="@mipmap/ic_launcher"
        app:showAsAction="ifRoom"
        android:title="item1"/>
    <item
        android:id="@+id/action_2"
        android:icon="@mipmap/ic_launcher"
        app:showAsAction="ifRoom"
        android:title="item2"/>
    <item
        android:id="@+id/action_settings"
        android:icon="@mipmap/ic_launcher"
        app:showAsAction="never"
        android:title="setting"/>

</menu>

效果图



这里用了三个item实现了三个Action按钮

属性 id:每一个按钮的标识     icon : 定义的图标   title :要显示的文字(图标正常,通常不显示文字)

            showAsAction :指定按钮显示位置    always表示永远显示在actionbar上,屏幕空间不足,不显示

            ifRoom表示屏幕空间够显示在ActionBar中,不够就显示在overflow中

           never则永远显示在overflow中

          

     如果继承自AppCompatActivity 需要使用app:showAsAction,
     继承自Activity 需要使用android:showAsAction

MainActivity中添加方法显示ActionBar

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return super.onCreateOptionsMenu(menu);
}

注意:定义的文字默认不显示,但是要有,如果定义的图标在ActionBar上显示,可长按看到title定义的内容


四: 监听事件


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_1:
            //添加处理代码
            Toast.makeText(this,"1",Toast.LENGTH_LONG).show();
            return true;
        case R.id.action_2:
            //添加处理代码
            Toast.makeText(this,"1",Toast.LENGTH_LONG).show();
            return true;
        case R.id.action_settings:

            //添加处理代码
            Toast.makeText(this,"1",Toast.LENGTH_LONG).show();
            return true;
    }
    return true;
}


五 :使三个小点里的图标和title一起显示出来


//设置menu显示icon
@Override
protected boolean onPrepareOptionsPanel(View view, Menu menu) {
    if (menu != null) {
        if (menu.getClass() == MenuBuilder.class) {
            try {
                Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
                m.setAccessible(true);
                m.invoke(menu, true);
            } catch (Exception e) {
            }
        }
    }
    return super.onPrepareOptionsPanel(view, menu);
}

效果图:


就介绍这么多,感兴趣的可以往深处学学。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值