2016-08-01 6 views

Antwort

0

Der Sinn dieses Verhaltens ist, dass es sich auf allen Android-Telefonen genauso verhält. Das bedeutet auch, dass Benutzer, die mit der Android-Erfahrung vertraut sind, oder sogar diejenigen, die die Snackbar gesehen haben und sie zuvor entlassen haben, wissen, dass das Wischen nach rechts sie abtun wird.

Es gibt eine Anfrage, dieses Verhalten zu ändern, und es könnte mit genug Sternen genehmigt werden (es ist derzeit auf mittlere Priorität): 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); 
        } 
       } 
      }); 

Dieser Code für mich gearbeitet.

+0

Dieser Codeabschnitt funktioniert nur, wenn Sie "canSwipeDismissView" auf "true true" bearbeiten. Außerdem bricht es Rückrufe bei entlassenen Ereignissen. –