Откройте NavigationView, только нажав на значок в верхнем левом углу, но не с помощью жеста swype

Я реализую представление навигации в своем приложении.

На самом деле, я могу открыть его, нажав на значок «гамбургер» (на моей панели инструментов) и проведя пальцем слева направо.

Я хочу открыть его только через значок на панели инструментов, отключив swype. Возможно ли это сделать?

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

toggle.syncState();

РЕДАКТИРОВАТЬ

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); // HERE
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, sToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);

toggle.syncState();

Если я использую приведенный выше код, где я использовал DrawerLayout.LOCK_MODE_LOCKED_CLOSED, я отключаю и значок, и swype.


person eldivino87    schedule 14.03.2016    source источник
comment
Возможный дубликат отключить жест смахивания, который открывает панель навигации в Android   -  person Ajinkya    schedule 14.03.2016
comment
Нет, это не дубликат. Он просит оставить значок гамбургера включенным и отключить жест смахивания влево. У меня такой же вопрос.   -  person Heisenberg    schedule 29.06.2016
comment
и как ты в итоге решил свою проблему?   -  person sepehr    schedule 14.08.2016
comment
вы нашли решение для этого?   -  person pallavi    schedule 05.10.2016


Ответы (2)


Это работает для моего случая

Закрой:

drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

И разблокируйте его:

drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);

Надеюсь помочь!

person Kristiyan Varbanov    schedule 14.03.2016
comment
после инициализации вашего ящика - person Kristiyan Varbanov; 14.03.2016
comment
Если я использую приведенный выше код, где я использовал DrawerLayout.LOCK_MODE_LOCKED_CLOSED, я отключаю и значок, и swype. - person eldivino87; 14.03.2016
comment
хм интересно .. у вас был прослушиватель кнопки ящика для открытия макета - person Kristiyan Varbanov; 14.03.2016
comment
если вы попытаетесь заблокировать свой ящик после toggle.syncState(); , помогло ли это изменение? - person Kristiyan Varbanov; 14.03.2016
comment
У меня нет слушателя, чтобы открыть ящик. Я не переопределяю DrawerListener. - person eldivino87; 14.03.2016
comment
Давайте продолжим обсуждение в чате. - person eldivino87; 14.03.2016
comment
@KristiyanVarbanov, у меня такая же проблема, не могли бы вы поделиться результатом своего чата, пожалуйста? - person sepehr; 14.08.2016

Чтобы на значке гамбургера работал только щелчок, а не пролистывание, я сделал следующее:

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

ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, mDrawerLayout, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
mDrawerLayout.addDrawerListener(toggle);
toggle.syncState();

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
            mDrawerLayout.openDrawer(GravityCompat.START);
        }
    });
person pallavi    schedule 06.10.2016
comment
Вы также должны переопределить onDrawerSlide и снова заблокировать, когда ящик закрыт (slideoffset==0)... - person Ernstjan Freriks; 03.11.2017