2016-08-01 5 views
0

Google은 애플리케이션에서 스낵바를 사용하고 있습니다. 그러나 오른쪽으로 스 와이프하면 기본적으로 해제 될 수 있습니다. 왼쪽 방향 또는 오른쪽 방향으로 쓸어 넘기는 의미의 가로 방향을 쓸어 버릴 때 해고 할 수있는 설정이있어 왼손잡이도 쉽게 사용할 수 있습니다.Android - Snackbar - 가로 방향으로 해제 허용

답변

0

이 동작의 요점은 모든 Android 휴대 전화에서 동일한 방식으로 작동한다는 것입니다. 즉, Android 경험에 익숙한 사용자 나 Snackbar를보고 이전에 해고 한 사용자도 오른쪽으로 스 와이프하면이를 기각 할 것임을 알 수 있습니다. (그것은 중간 우선 순위에 현재의)

이 동작을 변경하는 요청이있다, 그것은 충분히 별 승인 될 수 있습니다 https://code.google.com/p/android/issues/detail?id=80102

0
Snackbar snackbar = Snackbar.make(fab, "snackbar", Snackbar.LENGTH_SHORT); 
      snackbar.show(); 
      final Snackbar.SnackbarLayout snackbarLayout = (Snackbar.SnackbarLayout) snackbar.getView(); 
      snackbar.setDuration(Snackbar.LENGTH_INDEFINITE); 
      snackbar.show(); 
      snackbarLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
       @Override 
       public void onGlobalLayout() { 
        ViewGroup.LayoutParams lp = snackbarLayout.getLayoutParams(); 
        if (lp instanceof CoordinatorLayout.LayoutParams) { 
         ((CoordinatorLayout.LayoutParams) lp).setBehavior(new SwipeDismissBehavior<Snackbar.SnackbarLayout>(){ 
          @Override 
          public boolean canSwipeDismissView(View view) { 
           return false; 
          } 
         }); 
         snackbarLayout.setLayoutParams(lp); 
        } 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
         snackbarLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); 
        } else { 
         snackbarLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
        } 
       } 
      }); 

이 코드는 나를 위해 일했다.

+0

"canSwipeDismissView"를 "true 반환"으로 편집하지 않으면이 코드가 작동하지 않습니다. 또한 해고 된 이벤트 콜백을 중단합니다. –

관련 문제