9

Sto lavorando alla barra Snack e al pulsante Azione mobile. Ho usato il layout di Coordinator per far apparire/spostare il pulsante di azione Floating quando viene visualizzata la barra degli snack. Il problema è che ho tenuto un'azione per snackbar. Toccando il pulsante fluttuante, spuntano Snackbar e il pulsante di azione fluttuante si sposta verso l'alto. E quando ho premuto la voce di azione snackbar, il pulsante di azione fluttuante si nasconde sotto lo snack bar bambino.Snackbar nasconde l'azione fluttuante premendo il pulsante di azione su di esso

E anche se premo il pulsante di azione flottante in modo consecutivo, anche il pulsante di azione mobile viene nascosto.

Il seguente è il mio codice.

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.dev.firsttest.Screen2" 
> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/primary_color"></android.support.v7.widget.Toolbar> 

<android.support.design.widget.CoordinatorLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/coordinatorlayout"> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/searchfab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|right" 
     android:layout_marginBottom="20dp" 
     android:layout_marginRight="20dp" 
     android:src="@drawable/ic_add_black_24dp" 
     app:fabSize="normal"> 

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

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

MainActivity

Toolbar toolbar; 
FloatingActionButton searchfab; 
CoordinatorLayout coordinatorLayout; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_screen2); 

    toolbar = (Toolbar)findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    coordinatorLayout = (CoordinatorLayout)findViewById(R.id.coordinatorlayout); 

    searchfab = (FloatingActionButton)findViewById(R.id.searchfab); 
    searchfab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Snackbar.make(coordinatorLayout, "This is Snackbar Demo", Snackbar.LENGTH_LONG).setAction("Click", new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Snackbar.make(coordinatorLayout, "This is Child Snackbar", Snackbar.LENGTH_LONG).show(); 
       } 
      }).show(); 
     } 
    }); 


} 

Premendo azione Child in Snackbar e chiavette consecutivi pulsante di azione flottante rende il pulsante di azione Floating nasconde indietro al Snackbar

Apprezzo il tuo aiuto

Grazie

+0

basta creare la vista genitore di coordinatorLayout e utilizzare lo stesso codice –

risposta

0

Non è stato possibile riprodurre il problema. Ecco il mio codice

View.OnClickListener test1 = new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(getActivity().findViewById(R.id.snackbarPosition), "test 1", Snackbar.LENGTH_LONG) 
         .setAction(R.string.snackbar_action_undo, new View.OnClickListener() { 

          @Override 
          public void onClick(View view) { 
           Snackbar.make(getActivity().findViewById(R.id.snackbarPosition), "test 2", Snackbar.LENGTH_LONG) 
             .setActionTextColor(getResources().getColor(R.color.myBlueGreen)) 
             .show(); 
          } 
         }) 
         .show(); 
      } 
     }; 

FloatingActionButton button = (FloatingActionButton)streamView.findViewById(R.id.buttonFloat); 
button.setOnClickListener(test1); 

XML

<android.support.design.widget.CoordinatorLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:textColor="@android:color/white" 
    android:id="@+id/snackbarPosition"> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/buttonFloat" 
     android:src="@drawable/ic_content_new" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|right" 
     android:layout_marginBottom="20dp" 
     android:layout_marginRight="20dp" 
     app:backgroundTint="@color/myBlueGreen" 

     app:elevation="6dp" 
     app:pressedTranslationZ="12dp" 
     /> 

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

aggiunta di un secondo snack "test2" apparire come un OnClickListener sul "test1" snack bar, per me, sostituisce lo snack "test1" con "test2" (e non nasconde il pulsante di azione Floating)

Inoltre, facendo doppio clic su Floating Action Button fa lampeggiare la barra di prova "test1", ovvero compaiono due volte ma non due snackbar uno sopra l'altro. Il pulsante di azione mobile non scompare.

In altre parole, non vedo mai uno snack bar "bambino" in cima a uno snack bar "padre".

Non riesco a vedere una differenza tra il tuo codice e il mio. Forse prova a copiare il mio codice e vedere se risolve il tuo problema.

+0

sfortuna. incapace di risolverlo. Il pulsante si sta spostando verso l'alto, premendo ancora una volta è nascosto. – user2350138

+0

Ma hai 2 snack bar uno sopra l'altro, o solo 1 snackbar e il pulsante mobile scende? – Matthieu

+0

Alla volta solo una snackbar appare come previsto. ma il pulsante fluttuante ritorna allo snack bar. – user2350138

Problemi correlati