如何让导航抽屉切换一直强行关闭

How to make navigation drawer toggle forcibly close all the time

我在我的项目中使用带工具栏的 DrawerToggle。我需要使抽屉切换处于活动状态(即它不应在单击或滑动时打开或关闭)。但是我完全了解如何通过使切换事件停止来实现这些目标。我知道我的问题很不一样,但我的要求是在运行时动态控制以控制 drawertoggle 的 属性。

我也发布了一段我在我的项目中用于 drawertoggle 的代码供您参考

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.drawer_layout);

        findViews();


        createFragments ();

        materialColorNames = getResources ().getStringArray(R.array.color_names);

        drawerAdpater = new DrawerAdapter(this,materialColorNames);
        mDrawerList.setAdapter(drawerAdpater);



        if (toolbar != null) {
            changeTitleText ("Droid");

            toolbar.setTitleTextColor (getResources ().getColor (R.color.droid_white));

            setSupportActionBar (toolbar);
        }
        initDrawer();


        updateFragment (0);
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
    }


    @Override
    protected void onResume () {
        super.onResume ();



    }

    private void changeTitleText (CharSequence title) {
        toolbar.setTitle(title);
    }

    private void createFragments () {

        myProjectsFragment = new MyProjectsFragment();

    }

    private void findViews() {
        mDrawerList = (ListView) findViewById(R.id.left_drawer);
        toolbar = (Toolbar) findViewById(R.id.toolbar);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);


    }

    private void initDrawer() {

        drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {

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

            }

            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
//                mDrawerLayout.closeDrawer(mDrawerList);



            }
        };
        mDrawerLayout.setDrawerListener(drawerToggle);
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        drawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        drawerToggle.onConfigurationChanged(newConfig);
    }



private void updateFragment(int position) {

        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

        switch (position) {

            case 0:
                ft.replace(R.id.content_frame, myProjectsFragment);
                break;
}

请帮我解决这个问题。我很长一段时间都在努力做到这一点。提前致谢。如果我的问题不清楚,请通过评论告诉我。

在你的onCreate()抽屉布局和列表找到后调用:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mDrawerList);
drawerToggle.setDrawerIndicatorEnabled(false);

来自Javadoc

public void setDrawerLockMode (int lockMode, View drawerView)

Enable or disable interaction with the given drawer.

This allows the application to restrict the user's ability to open or close the given drawer. DrawerLayout will still respond to calls to openDrawer(int), closeDrawer(int) and friends if a drawer is locked.