抽屉不使用工具栏作为支持ActionBar

时间:2017-03-29 19:22:29

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

我正在使用setSupportActionBar创建一个带有我自己的工具栏的抽屉。以前我用的是

new ActionBarDrawerToggle(this, drawer, toolbar, "open", "close");

但是因为它是用我自己的工具栏实现的,我的onOptionsItemSelected()方法没有触发,所以使用Andrei Lupsa的答案here我从docs更改为以下构造函数,并且方法开始了再次工作。

new ActionBarDrawerToggle(this, drawer, "open", "close");

不幸的是,现在抽屉听众不再工作了。它会在条形图上显示汉堡包图标,但在按下时不会打开。这是实施:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerToggle = new ActionBarDrawerToggle(
        this, drawer, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(drawerToggle);
drawerToggle.syncState();

我的AndroidManifest使用以下样式:

<style name="AppTheme.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

但我也试过

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

因为我认为它与ActionBarDrawerToggle有关,不再识别工具栏,但如果是这种情况,那么为什么汉堡包图标仍会显示?

修改添加onOptionsItemSelected()

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        switch(id) {
            case R.id.action_settings:
                break;
            case android.R.id.home:
                getSupportFragmentManager().popBackStack();
                break;
        }

        return super.onOptionsItemSelected(item);
    }

android.R.id.home创建时仅显示BackStack&gt; 0,所以当在基本活动时,抽屉会显示,当进入下一个片段时,抽屉将切换到主箭头,并能够将用户带回基地。

0 个答案:

没有答案