通过操作栏标题切换导航抽屉

时间:2013-09-06 15:22:47

标签: android gmail android-actionbar toggle navigation-drawer

我正在尝试允许用户通过点按操作栏标题来打开/关闭我的应用中的导航抽屉(这是当前Android Gmail应用的设置方式)。此时,用户可以通过点击应用程序/抽屉图标或通过左右滑动将其滑入来切换抽屉。但是,操作栏标题本身不可单击。根据{{​​3}},当我们使用onOptionsItemSelected但是出于某种原因时,点击操作栏标题应该“使用带有项目ID android.R.id.home的MenuItem”将NAVIGATION_MODE_STANDARD发送到主机Activity我无法通过这种方式获得标题。

我相信导航抽屉本身很好,但这就是我设置操作栏的方式:

private void configureActionBar(CharSequence mTitle) {

    ActionBar actionBar = getActionBar();

    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setHomeButtonEnabled(true);

    actionBar.setIcon(R.drawable.ic_blank);

    GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM,
                new int[] {
                0xFF004700, 0xFF002900
                });

    gd.setCornerRadius(0f);

    actionBar.setBackgroundDrawable(gd);

    // set the title of the action bar using the given title
    actionBar.setTitle(mTitle);

}

任何建议都将不胜感激!

2 个答案:

答案 0 :(得分:23)

如果您想通过点击ActionBar的Icon / Title来打开抽屉,我建议您使用支持库中提供的 ActionBarDrawerToggle 类( android.support.v4.app。 ActionBarDrawerToggle

参考: https://developer.android.com/reference/android/support/v4/app/ActionBarDrawerToggle.html

使用实例:
https://developer.android.com/training/implementing-navigation/nav-drawer.html

当在onOptionsItemSelected()中捕获事件时,必须将其传递给ActionBarDrawerToggle,以便它可以处理打开/关闭抽屉请求:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Pass the event to ActionBarDrawerToggle, if it returns
    // true, then it has handled the app icon touch event
    if (mDrawerToggle.onOptionsItemSelected(item)) {
      return true;
    }
    // Handle your other action bar items...

    return super.onOptionsItemSelected(item);
}

答案 1 :(得分:0)

如果在AndroidManifest.xml中设置应用程序主题属性,则显示图标/标题:

    <application
    android:name=".SampleApp"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

res / values / styles.xml包含主题声明

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

它的工作原理是使用android.support.v7.app.ActionBarDrawerToggle,同时不推荐使用support.v4类。见How to use support-v7-appcompat library