2016-06-09 14 views
7

Nella mia app ho uno snack che appare quando si preme un pulsante.SnackBar appare animazione

Snackbar.make(v, "Enter valid data", Snackbar.LENGTH_SHORT).show(); 

Nel codice precedente, v è la vista ottenuta nell'evento onClick di un FloatingActionButton.

Nello SnackBar predefinito, appare con un'animazione scorrevole. Nella mia app, l'animazione non viene mostrata. Appare solo senza animazione. C'è un modo per forzare l'animazione a mostrare?

Ecco il file di layout

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout    
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:id="@+id/loginRootView" 
android:layout_height="match_parent" 
android:background="@drawable/back_pattern"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/loginToolbar" 
     android:layout_width="match_parent" 
     android:layout_height="56dp" 
     android:background="@color/primary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 


</android.support.design.widget.AppBarLayout> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v7.widget.CardView 
     android:id="@+id/loginCard" 
     android:layout_width="match_parent" 
     android:layout_height="290dp" 
     android:layout_centerInParent="true" 
     android:layout_marginBottom="5dp" 
     android:layout_marginEnd="5dp" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:layout_marginStart="5dp" 
     android:layout_marginTop="5dp" 
     app:cardCornerRadius="3dp" 
     app:cardElevation="4dp" 
     app:cardUseCompatPadding="true"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <android.support.design.widget.TextInputLayout 
       android:id="@+id/loginNumber" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_centerHorizontal="true" 
       android:layout_marginRight="80dp" 
       android:layout_marginTop="40dp"> 

       <EditText 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:hint="Mobile Number" 
        android:inputType="phone" 
        android:textColor="#666666" /> 
      </android.support.design.widget.TextInputLayout> 

      <android.support.design.widget.TextInputLayout 
       android:id="@+id/loginPassword" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/loginNumber" 
       android:layout_centerInParent="true" 
       android:layout_marginRight="80dp" 
       android:layout_marginTop="20dp"> 

       <EditText 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:hint="Password" 
        android:inputType="textPassword" 
        android:textColor="#666666" /> 
      </android.support.design.widget.TextInputLayout> 

      <TextView 
       android:id="@+id/loginForgotPassword" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignLeft="@+id/loginPassword" 
       android:layout_below="@+id/loginPassword" 
       android:layout_marginLeft="5dp" 
       android:layout_marginTop="15dp" 
       android:text="Forgot Password?" /> 

     </RelativeLayout> 

    </android.support.v7.widget.CardView> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/loginButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/loginCard" 
     android:layout_marginRight="20dp" 
     android:layout_marginTop="-43dp" 
     android:background="#12af1c" 
     android:src="@drawable/ic_done_white_36dp" /> 

    <TextView 
     android:id="@+id/loginSignUpLink" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/loginCard" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="20dp" 
     android:text="New user? Register here." 
     android:textSize="18sp" /> 

</RelativeLayout> 
</android.support.design.widget.CoordinatorLayout> 
+0

Possibile duplicato di [Snackbar e altre animazioni ha smesso di funzionare su alcuni dispositivi Android] (http://stackoverflow.com/questions/37221914/snackbar-and-other-animations-stopped-working-on-some-android-devices) – Amagi82

risposta

19

Ho finito per correre nelle mie animazioni Snackbar non funziona anche. È risultato che avevo un'altra app con le opzioni di accessibilità abilitate che disabilita determinate animazioni come l'animazione di Snackbar.

vedi post # 5 da Chris: https://code.google.com/p/android/issues/detail?id=206416

Il controllo è AccessibilityManager.isEnabled(), che restituisce true quando qualsiasi servizio di accessibilità è abilitato. Ho appena controllato su vari livelli API . Snackbar funziona bene senza un servizio di accessibilità abilitato.

Nel mio caso ho installato GIF Keyboard e abilitato come opzione di accessibilità. Entrando in Impostazioni -> Accessibilità e disattivando la tastiera GIF, le animazioni iniziano ad apparire nella mia app.

+9

Che tipo di funzione ritardata è quella ?? Ah .. Google – VSG24

+1

Come posso forzarlo in quei casi? Ho notato che la barra degli strumenti dell'app Inbox funziona con l'animazione giusta, anche con le impostazioni di accessibilità attivate. Mentre la mia app non lo fa: | – Cesarsk

+0

@Cesarsk Posso solo immaginare che usano uno Snackbar personalizzato. – egfconnor

0

la versione del vostro progetto di sostegno a 23.4.0

compile 'com.android.support:design:23.4.0'