013_Action Bar 导览 翻译学习

来源:互联网 发布:淘宝已有店铺状态异常 编辑:程序博客网 时间:2024/06/14 03:32

ActionBar导览

官方:http://developer.android.com/guide/topics/ui/actionbar.html

相关博客:http://blog.csdn.net/guolin_blog/article/details/18234477 讲得很全面

简介:action bar是一个窗体功能,它用来表示用户当前的操作界面位置,并且提供一些操作的按钮和导航功能。   action bar可以给用户一种熟悉的感觉,他们能清楚地知道下一步该如何操作。action bar拥有非常好的系统级支持。可以自动适配不同的屏幕。


1、  展示了APP icon;  2、可直接操作的按钮 actionitems;  3、overflow  隐藏一些可操作的按钮,点击后展开。

添加ActionBar

当指定targetSdkVersion或则minSdkVersion为API11(android 3.0)以上时,当activity的主题设置为”Theme.Holo”时,则默认包含action bar功能;如果不希望使用action bar,则可以使用” Theme.Holo.NoActionBar”主题。

隐藏ActionBar

首先获得action bar对象,再调用hide()方法即可,如果需要再次显示,则调用show()方法。

ActionBar actionBar = getActionBar();

actionBar.hide();

à需要注意的是,当隐藏和显示actionbar时会使得activity进行二次布局来填充原来action bar所在区域。如果action bar需要经常性地隐藏和显示,我们应该使用action bar的悬浮功能(设置windowActionBarOverlay为true),此时,它会在activity上面来绘制这个action bar。这样,当隐藏和显示action bar时就不需要对activity进行二次布局。

修改ActionBar的图标和标题

默认情况下,系统会使用<application>或者<activity>中icon属性指定的图片来作为ActionBar的图标,但是我们也可以改变这一默认行为。如果我们想要使用另外一张图片来作为ActionBar的图标,可以在<application>或者<activity>中通过logo属性来进行指定,如果需要指定标题,也只需要在<application>或者<activity>中通过lable属性来进行指定。

添加Action按钮

ActionBar还可以根据应用程序当前的功能来提供与其相关的Action按钮,这些按钮都会以图标或文字的形式直接显示在ActionBar上。当然,如果按钮过多,ActionBar上显示不完,多出的一些按钮可以隐藏在overflow里面(最右边的三个点就是overflow按钮),点击一下overflow按钮就可以看到隐藏的全部Action按钮了。(如果不愿意使用overflow按钮,使用Menu菜单键呼出这些按钮也是可以的)

当Activity启动的时候,系统会调用Activity的onCreateOptionsMenu()方法来取出所有的Action按钮,我们只需要在这个方法中去加载一个menu资源,并把所有的Action按钮都定义在资源文件里面就可以了。示例:

在menu中定义action buttons,res/menu/main_activity_actions.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:yourapp="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"/>
    <item android:id="@+id/action_compose"
         android:icon="@drawable/ic_action_compose"
         android:title="@string/action_compose"
          yourapp:showAsAction="ifRoom"/>
</menu>
// showAsAction用来控制action item的位置
  //always--始终显示
  //never—始终不显示在action bar中,显示在overflow
  //ifRoom当空间足够时直接显示在action bar中,否则显示在overflow

然后在activity的onCreateOptionsMenu方法中导入菜单资源。

@Override
public boolean onCreateOptionsMenu(Menu menu){
    // Inflate themenu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
}

在activity的onOptionsItemSelected方法中可以处理每一项action item单击事件。

@Override
public boolean onOptionsItemSelected(MenuItem item){
    // Handlepresses on the action bar items
    switch (item.getItemId()){
        case R.id.action_search:
            openSearch();
            return true;
        case R.id.action_compose:
            composeMessage();
            return true;
        default:
            return super.onOptionsItemSelected(item);
//如果这个action item是由fragment添加的,
//由于这些点击事件将首先传递给activity,所以当有未处理的点击事件时应该调用父类的//方法返回,以保证点击事件的正确传递。
    }  }

分离actionbar


如图所示,可以将action bar各部分分开。

图片二中效果可以通过配置activity属性实现:

<manifest ...>
    <activity uiOptions="splitActionBarWhenNarrow" ...>
        <meta-data android:name="android.support.UI_OPTIONS"
                   android:value="splitActionBarWhenNarrow"/>
    </activity>
</manifest>

图片三的效果可以在onCreate中设置:

setDisplayShowTitleEnabled(false)

setDisplayShowHomeEnabled(false)

通过ActionBar图标进行导航


添加ActionProvider


添加NavigationTabs

当屏幕比较宽时:


当屏幕比较窄时(这些是由系统自动调整的)


添加Drop-downNavigation


定义ActionBar样式

可以根据需要,对action bar背景、title字体等自定义样式。


0 0
原创粉丝点击