Android开发之ActionBar与DrawerLayout

本文详细介绍了在Android开发中如何使用ActionBar,包括它的功能、如何创建Actions、设置显示方式,以及处理ActionBar的点击事件。同时,文章还探讨了在低版本Android上使用ActionBar的支持方法。此外,文章还讲解了如何实现 DrawerLayout 抽屉效果,包括自定义主题、设置监听以及使用ActionBarDrawerToggle进行控制。
摘要由CSDN通过智能技术生成

ActionBar位于Activity的顶部,可用来显示activity的标题、Icon、Actions和一些用于交互的View。它也可被用于应用的导航。
ActionBar 是在Android 3.0(API 11)中加入到SK中的,想在低版本中使用ActionBar给项目导入Support Library v7包即可。

使用ActionBar

开发API11以下的程序,首先必须在AndroidManifest.xml中指定Application或Activity的theme是Theme.Holo或其子类,否则将无法使用ActionBar。
如:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat.Light"
        android:name=".BaseApplication"
        >

2.1 创建Actions
Actions即ActionBar中的每个交互项,通常在XML文件中指定(位于res/menu)。在menu资源文件中定义Action的方法如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:wangxiapp="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
     tools:context=".MainActivity">
    <item android:id="@+id/action_search"
        android:icon="@mipmap/ic_action_search"  //搜索图标的图片
        android:title="research"        
        android:orderInCategory="100"  //此itemActionBar的位置。当有多个item时越大越在后面
        wangxiapp:showAsAction="ifRoom"
        />
</menu>

showAsAction属性用来定义每个Action是如何显示的,always表示永远显示在ActionBar中,如果屏幕空间不够则无法显示,ifRoom表示屏幕空间够的情况下显示在ActionBar中.
在Activity中创建ctionBar的Action代码位于onCreateOptionsMenu()中,下面一段代码展示了创建过程:

    @Override  
      public boolean onCreateOptionsMenu(Menu menu) {  
        MenuInflater inflater = getMenuInflater();  
        inflater.inflate(R.menu.mainmenu, menu);   //第一个参数设置ActionBar最左边的图片
        return true;  
      }   

有的时候由于一些特殊原因,最左边的图片,即应用的图标不显示,此时需要一些设置。在MainActivity中添加如下代码:

           actionBar = getSupportActionBar();
        actionBar.setLogo(R.mipmap.ic_launcher);
        actionBar.setDisplayUseLogoEnabled(true);
        actionBar.setDisplayShowHomeEnabled(true);

运行效果如图:

这里写图片描述

现在我们看到了设置的图片,但没有看的我们在item中设置的title。原因是:
如果你的menu既提供了title又提供了icon属性,那么默认显示icon,如果你想要显示文字title,就添加”withText”属性,如下:

1 <item yourapp:showAsAction="ifRoom|withText" ... />

备注:“withText”属性是给action bar的一个暗示,告诉它应该显示文字title,如果可以的话,就显示,但是当icon是可用的并且action bar的空间受到限制的时候,就不一定会显示了。

你应该为每一个item声明title属性,即使你不声明title要显示,因为:

1)如果没有足够的空间显示所有的action item,那显示在overflow中的Item就只会显示title,此时图片会变成竖着的三个点,点击时就会显示title;

2)视觉受损者会读取title;

3)如果action item只显示icon,那么当用户长按item的时候,会显示一个小的提示窗口显示action的title;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值