【问题标题】:Navigation drawer home icon does not restore to hamburger icon导航抽屉主页图标不会恢复为汉堡图标
【发布时间】:2015-06-24 22:33:26
【问题描述】:

我通过在抽屉布局中包含一个片段来制作导航栏。一切正常,抽屉从左侧滑出,一切正常。

第一次打开应用程序时,我看到一个汉堡图标。当我将其完全打开并重新关闭时,汉堡图标变为左箭头。

我无法弄清楚为什么会发生这种情况。

代码如下:

活动:

 // Drawer
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

    // toolbar
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setTitle("Blah");
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    // navigation drawer
    NavigationDrawerFragment navigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
    navigationDrawerFragment.setUp(R.id.navigation_drawer, drawerLayout, toolbar);

上面调用的setUp函数:

public void setUp(int fragmentId, DrawerLayout drawerLayout, Toolbar toolbar) {
    this.navigationDrawerView = getActivity().findViewById(fragmentId);
    this.drawerLayout = drawerLayout;
    actionBarDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            getActivity().invalidateOptionsMenu();
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerOpened(drawerView);
            getActivity().invalidateOptionsMenu();
        }
    };
    drawerLayout.setDrawerListener(actionBarDrawerToggle);
    drawerLayout.post(new Runnable() {
        @Override
        public void run() {
            actionBarDrawerToggle.syncState();
        }
    });
}

P.S:我是 android 编程新手。我遵循了一个 youtube 教程来实现这一点。我很清楚发生了什么,但请(如果可能)稍微描述一下,以便帮助我理解它。

【问题讨论】:

    标签: android android-layout android-fragments navigation-drawer


    【解决方案1】:

    你的方法 onDrawerClosed 是错误的。您正在调用 super.onDrawerOpened 并且必须是 super.onDrawerClosed(drawerView);

    这样

    @Override
    public void onDrawerClosed(View drawerView) {
           super.onDrawerClosed(drawerView);
           getActivity().invalidateOptionsMenu();
    }
    

    【讨论】:

    • 非常感谢!我已经吸取了教训。永远不要复制粘贴您的代码。我总是忘记重构某些东西。
    【解决方案2】:

    改变一下

    import android.support.v4.app.ActionBarDrawerToggle;
    

    进入

    import android.support.v7.app.ActionBarDrawerToggle;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-02
      • 2022-08-15
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多