안드로이드에서 탐색 창을 여는 스 와이프 동작을 비활성화 따르고 있으며

Google의 탐색 서랍 가이드를 따르고 있으며 탭과 제스처가있는 활동에 추가하고 싶습니다.

탐색 창을 열려면 제스처를 비활성화하고 싶습니다. 어떻게 해야할지 아무도 모릅니다.



답변

다음을 사용해야합니다.

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

그것은 나를 위해 일했습니다. 서랍을 열려면 스 와이프가 비활성화되었습니다.

여전히 작동하지 않으면 여기에 제공된 답변을 확인 하십시오 .


답변

잠금을 위해 다음을 수행 할 수 있습니다.

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

그리고 잠금 해제 :

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);


답변

setDrawerLockMode () 사용시 중력 값도 추가하십시오 .

이 작업을 수행 :

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);

이것은 매력처럼 작동해야합니다


답변

스 와이프를 비활성화하려면 재정의 onInterceptTouchEventonTouchEvent켜기를 설정 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)
  }
}


답변

이것은 나를 위해 작동

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, {Your drawer view});


답변