Недавно я решил это путем вычитания высоты навигационной панели из нижний край представления Snackbar.
Для начала нам нужна высота навигационной панели. Я нашел код, который в ответ помечается как правильно здесь: How to REALLY get the navigation bar height in Android
Далее используйте следующий код для настройки закусочной нижнего края:
final Snackbar snackbar = Snackbar.make(findViewById(R.id.fullscreen_content),
message, Snackbar.LENGTH_LONG);
View snackbarView = snackbar.getView();
// Adjust Snackbar height for fullscreen immersive mode
int navbarHeight = getNavigationBarSize(this).y;
CoordinatorLayout.LayoutParams parentParams = (CoordinatorLayout.LayoutParams) snackbarView.getLayoutParams();
parentParams.setMargins(0, 0, 0, 0 - navbarHeight);
snackbarView.setLayoutParams(parentParams);
snackbar.show();
Обратите внимание, что я использовал LayoutParams из в CoordinatorLayout. Вы должны заменить CoordinatorLayout на любой тип родительского макета, который вы передали в свою функцию Snackbar.make()
(в моем случае R.id.fullscreen_content
- это CoordinatorLayout). Хорошая вещь об использовании CoordinatorLayout заключается в том, что он позволяет Snackbars быть уволен, проводя обычное поведение.
вы можете использовать пользовательский макет! http://stackoverflow.com/questions/32453946/how-to-customize-snackbars-layout/33441214#33441214 – xbadal
Не могли бы вы поместить код? По коду я подразумеваю макет из этого действия, весь ваш код закусочной и конфигурацию Gradle. – LeonardoSibela