Google의 탐색 서랍 가이드를 따르고 있으며 탭과 제스처가있는 활동에 추가하고 싶습니다.
탐색 창을 열려면 제스처를 비활성화하고 싶습니다. 어떻게 해야할지 아무도 모릅니다.
Google의 탐색 서랍 가이드를 따르고 있으며 탭과 제스처가있는 활동에 추가하고 싶습니다.
탐색 창을 열려면 제스처를 비활성화하고 싶습니다. 어떻게 해야할지 아무도 모릅니다.
답변:
다음을 사용해야합니다.
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
그것은 나를 위해 일했습니다. 서랍을 열려면 스 와이프가 비활성화되었습니다.
mDrawerLayout
다음과 같이 설정하십시오.mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
ToolBar
(API 21) 을 구현하고 SlidingTabLayout
내 기능과 충돌 하는 기능을 사용 하려고하기 때문에 궁금 합니다. 서랍 스 와이프. 따라서 Nav를 사용하지 않도록 설정하고 싶습니다. 서랍 슬라이드는 ToolBar
슬라이딩 기능 을 선호 합니다.
잠금을 위해 다음을 수행 할 수 있습니다.
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
그리고 잠금 해제 :
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
setDrawerLockMode () 사용시 중력 값도 추가하십시오 .
이 작업을 수행 :
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
이것은 매력처럼 작동해야합니다
스 와이프를 비활성화하려면 재정의 onInterceptTouchEvent
및 onTouchEvent
켜기를 설정 DrawerLayout
하고 false를 반환하도록합니다.
스 와이프를 비활성화하는 답은 정답입니다. LOCK_MODE_LOCKED_CLOSED는 Compat 24.x에서 작동했지만 새로운 compat 라이브러리에서 기능이 변경되었으며 LOCK_MODE_LOCKED_CLOSED는 햄버거 메뉴를 사용하더라도 내비게이션 메뉴가 완전히 표시되지 않습니다.
다음 수업은 나를 위해 일합니다 (Kotlin).
class MyDrawerLayout(ctx: Context) : DrawerLayout(ctx) {
var isSwipeOpenEnabled: Boolean = true
override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
if (!isSwipeOpenEnabled && !isDrawerVisible(Gravity.START)) {
return false
}
return super.onInterceptTouchEvent(ev)
}
@SuppressLint("ClickableViewAccessibility")
override fun onTouchEvent(ev: MotionEvent): Boolean {
if (!isSwipeOpenEnabled && !isDrawerVisible(Gravity.START)) {
return false
}
return super.onTouchEvent(ev)
}
}