切换按钮第一次不适用于导航抽屉

时间:2016-05-06 08:22:23

标签: android navigation-drawer

我看到了类似的问题,但答案毫无用处。这就是我发布它的原因。 以下是我在FragmentDrawer.java设置抽屉的方法。

public void setUp(int fragmentId, DrawerLayout drawerLayout, Toolbar toolbar) {
    containerView = getActivity().findViewById(fragmentId);
    mDrawerLayout = drawerLayout;
    toolBar = toolbar;
    onDrawerOpen();
    mDrawerToggle.setDrawerIndicatorEnabled(false);
    mDrawerToggle.setHomeAsUpIndicator(R.drawable.drawer);
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    mDrawerLayout.post(new Runnable() {
        @Override
        public void run() {
            mDrawerToggle.syncState();
        }
    });
    mDrawerToggle.setToolbarNavigationClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            onDrawerOpen();
        }
    });
}

这是onDrawerOpen方法。

private void onDrawerOpen() {
    mDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout,
            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.onDrawerClosed(drawerView);
            getActivity().invalidateOptionsMenu();
        }

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            super.onDrawerSlide(drawerView, slideOffset);
            toolBar.setAlpha(1 - slideOffset / 2);
        }
    };
}

MainActivity拨打电话。

drawerFragment.setUp(R.id.fragment_navigation_drawer, mDrawer, mToolbar);

2 个答案:

答案 0 :(得分:1)

首次通过调用ActionBarDrawerToggle初始化onDrawerOpen()后,您调用setDrawerIndicatorEnabled(false),这将禁用指标,并将所有点击结果路由到导航点击监听器。首次点击后,再次调用onDrawerOpen(),重新初始化切换,然后按预期工作。

目前还不清楚您要做什么,但如果您只想要标准切换行为,请将切换初始化移至setup()方法,然后移除setDrawerIndicatorEnabled()和{{1}电话。

setToolbarNavigationClickListener()

答案 1 :(得分:0)

在Xml文件中,您必须更改NavigationView可见性

   <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        android:visibility="visible"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer">
    </android.support.design.widget.NavigationView>