Закусочная не увольняет на свайпе
У меня есть закусочная в моей деятельности appcompat. В нем есть кнопка "ОК", закрыть закусочную.Он работает покраснели. но я не могу отмахнуться от закусочной на салфетке (слева направо).
Ниже приведен мой код для закусочной....
final Snackbar snackbar = Snackbar
.make(view, "Error Message", Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View view) {
snackbar.dismiss();
}
});
snackbar.show();
Edit 1
У меня есть относительный макет в качестве родительского макета в XML-макете моей деятельности.
3 ответа:
Snackbar нуждается в CoordinatorLayout в качестве корневого макета или в некоторых местах поверх него, чтобы выполнять различные операции, такие как размах для удаления. Вы должны иметь это где-то в иерархии вашего макета.
Далее вид, который мы проходим в закусочной.метод make() используется для поиска CoordinatorLayout где-то в иерархии представлений. Метод переходит от этого представления к корневому представлению, чтобы найти CoordinatorLayout, над которым он может показать закусочную и выполнить ее анимацию и оперативный.
Поэтому попробуйте заменить корневой макет на CoordinatorLayout, и ваша проблема будет решена.
Я написал библиотеку, которая поддерживает swipe to dimiss поведение даже без предоставления CoordinatorLayout. Пользователи могут провести как влево, так и вправо, чтобы отклонить его (первоначально вы можете только провести вправо). Он также включает в себя progressBar и другие вещи. Попробуйте https://github.com/tingyik90/snackprogressbar .
Все, что вам нужно сделать, это создать SnackProgressBar и разрешить swipe отклонить. Пример кода:
SnackProgressBar messageType = new SnackProgressBar( SnackProgressBar.TYPE_MESSAGE, "Your message") .setSwipeToDismiss(true)
В качестве ссылки на ответ Ашвани Кумара. Я видел интимный вопрос, есть ли способ реализовать это с помощью LinearLayout. Ну просто оберните свой оригинальный LinearLayout с CoordinatorLayout с
match_parent
в атрибутахandroid:layout_height
иandroid:layout_height
.Это сохранит ваше первоначальное расположение и по-прежнему убедитесь, что закусочная является swipable.
Закусочная теперь будет выглядеть так:
Для фрагментов -
Snackbar.make(getView(), "Error Message", Snackbar.LENGTH_INDEFINITE);
Для деятельности -
Snackbar.make(this.findViewById(android.R.id.content), "Error Message", Snackbar.LENGTH_INDEFINITE);
Предполагая, что вы обернул весь ваш макет с CoordinatorLayout, и это корневой макет.