快餐栏的自定义幻灯片动画

时间:2019-09-12 10:07:06

标签: android snackbar

我在布局的顶部制作了一个小吃店。但是,当它出现时,它向上滑动,而当它消失时,它向下滑动。我的愿望是使它从屏幕顶部显示并向下滑动,反之亦然。

CoordinatorLayout coordinatorLayout = findViewById(R.id.v_set_bgs);
snackbar = Snackbar.make(coordinatorLayout, R.string.changes, Snackbar.LENGTH_INDEFINITE);
View view = snackbar.getView();
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) view.getLayoutParams();
params.gravity = Gravity.START;
TextView snackbarText = view.findViewById(android.support.design.R.id.snackbar_text);
snackbarText.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
view.setLayoutParams(params);
view.setAlpha(0.75f);
if (snackbarShow && isAlready == 0 && AppSettings.isChanged) {
    isAlready = 1;
    snackbar.show();
}

所以。到目前为止,它的工作方式就像普通的小吃店(位于布局顶部)。我只是找不到任何方法来更改滑动方向。

2 个答案:

答案 0 :(得分:2)

根据文档

  

小吃栏提供有关操作的轻量级反馈。他们展示了   移动设备屏幕底部的简短消息,左下方为   更大的设备。小吃栏出现在屏幕上所有其他元素的上方   一次只能显示一个。

您可以做的最好的选择是扩展Snackbar类并覆盖show方法或其他负责动画的方法

答案 1 :(得分:-1)

这使Snackbar出现在顶部,而不会出现奇怪的幻灯片。

科特林最好的简单解决方案:

val snackbar = Snackbar.make(view, string, Snackbar.LENGTH_LONG)
val layoutParams = LayoutParams(snackbar.view.layoutParams)

layoutParams.gravity = Gravity.TOP
snackbar.view.setPadding(0, 10, 0, 0)
snackbar.view.layoutParams = layoutParams
snackbar.animationMode = BaseTransientBottomBar.ANIMATION_MODE_FADE
snackbar.show()