programing

Android에서 탐색 드로어를 여는 스와이프 제스처 사용 안 함

minimums 2023. 8. 21. 21:00
반응형

Android에서 탐색 드로어를 여는 스와이프 제스처 사용 안 함

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);

이것은 매력적으로 작용할 것입니다.

스위핑을 비활성화하는 정답은 정답입니다.LOCK_MODE_LOCKED_CLOSED는 Compat 24.x에서 작동했지만, 최신 호환 라이브러리에서 기능이 변경되었으며 이제 LOCK_MODE_LOCKED_CLOSED는 햄버거 메뉴를 사용하더라도 내비게이션 메뉴가 표시되지 않습니다.

다음 수업은 저에게 도움이 됩니다(Kotlin).

class MyDrawerLayout @JvmOverloads constructor(
    ctx: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : DrawerLayout(ctx, attrs, defStyleAttr) {
      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)
      }
    }

스위핑을 비활성화하려면, 재정의onInterceptTouchEvent그리고.onTouchEventDrawerLayout거짓으로 돌려보내게 할 겁니다

이것은 나에게 효과가 있습니다.

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

언급URL : https://stackoverflow.com/questions/17051104/disable-the-swipe-gesture-that-opens-the-navigation-drawer-in-android

반응형