Snackbar скрывает плавающее действие при нажатии кнопки действия на нем

Я работаю над Снэк-баром и плавающей кнопкой действия. Я использовал макет координатора для создания кнопки плавающего действия для отображения/перемещения при отображении snackbar. Проблема в том, что я сохранил действие для snackbar . Когда плавающая кнопка нажата, Snackbar выскакивает и плавающая кнопка действия движется вверх. И когда я нажал элемент действия snackbar, плавающая кнопка действия становится скрытой под дочерней snackbar.

и если я нажму кнопку плавающей действий последовательно, затем также плавающая кнопка действия становится скрытой.

Ниже приведен мой код.

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


}

нажатие дочернего действия в Snackbar и последовательные нажатия на плавающую кнопку действия делает плавающую кнопку действия скрывается обратно в Snackbar

ценю вашу помощь

спасибо

2 ответов


ответ ее здесь:https://github.com/ggajews/coordinatorlayoutwithfabdemo .

Он будет перемещать FAB, когда отображается закусочная.


Я не смог воспроизвести вашу проблему. Вот мой код

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>

добавление второго snackbar "test2" появляется как OnClickListener на snackbar "test1", для меня заменяет snackbar" test1 "на" test2 " (и не скрывает плавающую кнопку действия)

кроме того, дважды щелкнув по плавающей кнопке действия, snackbar "test1" мигает, т. е. появляется дважды, но не два snackbars один поверх другого. Плавающая кнопка действия не исчезающий.

другими словами, Я никогда не вижу "дочернюю" закусочную поверх "родительской" закусочной.

Я не вижу разницы между вашим кодом и моим. Возможно, попробуйте скопировать мой код и посмотреть, решит ли он вашу проблему.