Action Bar

来源:互联网 发布:linux做网站需要环境 编辑:程序博客网 时间:2024/05/21 19:23

 介绍:

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

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

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


四: 监听事件


@Overridepublic 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@Overrideprotected 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);}

效果图:


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