9

Ich arbeite an Snackbar und Floating Action Taste. Ich habe das Coordinator-Layout verwendet, um die Floating-Aktion zu aktivieren, wenn die Snackleiste angezeigt wird. Das Problem ist, dass ich eine Aktion für Snackbar gehalten habe. Wenn die schwebende Schaltfläche angetippt wird, erscheint die Snackbar und die Schaltfläche "Floating" bewegt sich nach oben. Und wenn ich den Imbiss-Action-Gegenstand drücke, wird der Schwimm-Action-Button unter der Kinder-Snackbar versteckt.Snackbar verbirgt die Floating Action beim Drücken der Aktionstaste

Und auch wenn ich schwimmende Aktionstaste nacheinander drücke, dann wird auch die schwimmende Aktionsschaltfläche ausgeblendet.

Folgendes ist mein Code.

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


} 

Pressing Kinder Aktion in Snackbar und aufeinanderfolgende Abgriffe auf Schwimmdock Aktionstaste macht die Floating Action-Taste, um die Snackbar versteckt zurück

Schätzen Sie Ihre Hilfe

Vielen Dank

+0

machen Sie einfach coordinatorLayout übergeordnete Ansicht und verwenden Sie den gleichen Code –

Antwort

0

Ich konnte Ihr Problem nicht reproduzieren. Hier ist mein Code

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> 

ein zweites snackbar "test2" Hinzufügen erscheinen als OnClickListener auf der Snackbar "test1", für mich, ersetzt die snackbar "test1" durch "test2" (und versteckt die Floating-Schaltfläche nicht)

Wenn Sie zweimal auf den Floating-Action-Button klicken, blinkt die Snackbar "test1", dh zweimal, aber nicht zwei Snackbars übereinander. Die schwebende Aktionsschaltfläche wird nicht ausgeblendet.

Mit anderen Worten, ich sehe nie eine "Kind" Snackbar auf einem "Eltern" Snackbar.

Ich kann keinen Unterschied zwischen Ihrem Code und mir sehen. Versuchen Sie vielleicht, meinen Code zu kopieren, um zu sehen, ob er Ihr Problem löst.

+0

Pech gehabt. unfähig, es zu lösen. Der Knopf bewegt sich nach oben, beim erneuten Drücken wird er ausgeblendet. – user2350138

+0

Aber Sie bekommen 2 Snackbars übereinander, oder nur 1 Snackbar und der schwebende Knopf geht runter? – Matthieu

+0

Zu einer Zeit erscheint nur eine Snackbar wie erwartet. aber schwebender Knopf, der zurück zur Imbissbar fällt. – user2350138

Verwandte Themen