Как изменить начальное выравнивание Android Snackbar снизу вверх?
недавняя библиотека android вышла всего несколько дней назад, но я хотел бы иметь SnackBar
появляются в верхней части экрана, предпочтительно в пределах RelativeLayout, как это родительский вид.
как изменить SnackBar
начальное выравнивание, которое я предполагаю быть layout_alignParentBottom
to layout_alignParentTop
?
5 ответов
можно сделать snackbar появляются в верхней части экрана, используя это:
Snackbar snack = Snackbar.make(parentLayout, str, Snackbar.LENGTH_LONG);
View view = snack.getView();
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)view.getLayoutParams();
params.gravity = Gravity.TOP;
view.setLayoutParams(params);
snack.show()
Примечание: анимация для закусочной начинается снизу и поднимается до верхней части экрана, как ожидалось, потому что она должна была быть внизу в соответствии с ответом ianhanniballake.
для уведомлений, набегающих сверху, было бы, вероятно, лучше получить пользовательский баннер вместо этого.
нет, в материальный дизайн спецификации для закусок:
Snackbars обеспечивают легкий обратную связь об операции, показывая краткое сообщение в нижней части экрана.
поскольку библиотека дизайна стремится реализовать спецификации material design, невозможно разместить Snackbar в любом положении, кроме нижней части экрана (или содержащего CoordinatorLayout
).
вот простой способ добавить SnackBar с помощью CoordinatorLayout из верхней части экрана, но анимация по-прежнему является проблемой.
просто добавьте макет CoordinatorLayout в свой макет, например:
<android.support.design.widget.CoordinatorLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:id="@+id/snackbarlocation">
</android.support.design.widget.CoordinatorLayout>
а затем в вашей деятельности получите ссылку на него и передайте его в закусочную, как показано ниже:
CoordinatorLayout Clayout = (CoordinatorLayout)findViewById(R.id.snackbarlocation);
FabButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(Clayout, "This snack bar located at top", Snackbar.LENGTH_SHORT).show();
}
});
Это можно сделать простыми способами
сначала создайте макет, где snackbar должен быть включен
<LinearLayout
android:id="@+id/info_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
потом в коде
ll_mesg.addView(Snackbar.make(ll_mesg, "Please choose your luck from one of box", Snackbar.LENGTH_LONG)
.getView());
new Handler().postDelayed(new Runnable() {
public void run() {
ll_mesg.removeAllViews();
}
}
,1000);
Ну, вы можете получить layoutparam snackbar и изменить bottomMargin в коде. как
Snackbar snackbar = Snackbar.make(rootView, message, Snackbar.LENGTH_LONG);
View view = snackbar.getView();
FrameLayout.LayoutParams para = (CoordinatorLayout) view.getLayoutParams();
params.bottomMargin = showAtLocation // pass your location offset here
view.setLayoutParams(params);
затем вы можете использовать snackbar экземпляр, чтобы показать, когда вы хотите
snackbar.show();