【问题标题】:Android drawer open works only onceAndroid 抽屉打开只工作一次
【发布时间】:2017-08-08 09:19:24
【问题描述】:

Android 抽屉打开只能使用一次。我尝试了几种方法。我的代码:

   public void openDrawer() {
        ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.drawer_open, R.string.drawer_close);
        drawer.setDrawerListener(mDrawerToggle);
        mDrawerToggle.syncState();
        if(drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawers();
        } else {
            drawer.openDrawer(GravityCompat.START);
        }
    }

和方法2:

public void openDrawer() {
    if(drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawers();
    } else {
        drawer.openDrawer(GravityCompat.START);
    }
}

在这两种情况下,仅在第一次打开和关闭时才有效。

编辑 问题是我从演示者那里调用方法。如果我将它绑定到 Activity 中的 OnClickListener,它就可以工作。我想我需要类似 preventDefault 之类的东西。

【问题讨论】:

    标签: java android drawerlayout navigation-drawer drawer


    【解决方案1】:

    试试这个方法,它在很多情况下都对我有用。

    编辑:将此部分添加到您的 onCreate() 方法中。并且只调用一次。

    ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.drawer_open, R.string.drawer_close);
        drawer.setDrawerListener(mDrawerToggle);
        mDrawerToggle.syncState();
    

    然后为您的自定义按钮设置一个点击监听器。

    customButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (drawer.isDrawerOpen(navigationView)) {
                        closeDrawer();
                    } else {
                        openDrawer();
                    }
                }
            });
    

    这些是辅助方法

    public void openDrawer() {
        drawer.openDrawer(GravityCompat.START);
    }
    
    public void closeDrawer() {
        drawer.closeDrawer(GravityCompat.START);
    }
    

    【讨论】:

    • 无自定义按钮
    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 2016-05-05
    相关资源
    最近更新 更多