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

Я работаю над Snack bar и Floating Action button. Я использовал макет Координатора, чтобы кнопка плавающего действия появлялась / перемещалась при отображении закусочной. Проблема в том, что я сохранил действие для закусочной. Когда нажимается плавающая кнопка, появляется 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

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

Спасибо


comment
просто сделайте родительский вид координатораLayout и используйте тот же код   -  person Mina Fawzy    schedule 30.11.2015


Ответы (2)


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

При отображении закусочной панели FAB будет перемещаться.

person 1lb3r    schedule 18.09.2015
comment
Большое спасибо! - Ильбер - person ; 31.05.2017

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

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>

Добавление второй закусочной «test2» отображается как OnClickListener на снэк-баре «test1», для меня заменяет закусочную «test1» на «test2» (и не скрывает плавающую кнопку действия)

Кроме того, при двойном нажатии на кнопку «Плавающее действие» панель закусок «test1» мигает, т. Е. Появляется дважды, но не две панели закусок, расположенные одна над другой. Кнопка плавающего действия не исчезает.

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

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

person Matthieu    schedule 17.09.2015
comment
неудача. не в состоянии решить это. Кнопка движется вверх, при повторном нажатии скрывается. - person user2350138; 17.09.2015
comment
Но у вас есть 2 закусочных друг над другом или только 1 закусочная и плавающая кнопка опускается? - person Matthieu; 17.09.2015
comment
Одновременно отображается только одна закусочная, как и ожидалось. но плавающая кнопка возвращается к закусочной. - person user2350138; 17.09.2015
comment
извините за повторение - если я нажимаю последовательно на плавающую кнопку действия или если я нажимаю дочернюю снекбар, кнопка возвращается к снекбару - person user2350138; 17.09.2015
comment
Я не понимаю вашу проблему, но не могу ее воспроизвести. какая версия андроида? Вы видите это в реальном приложении или эмуляторе? Если эмулятор, по умолчанию AVD или Genymotion? Какая версия Android? - person Matthieu; 18.09.2015
comment
Android 5.1 на эмуляторе и устройстве (nexus 5.1), Genymotion. - person user2350138; 19.09.2015