15

我想从顶部提供动画,而不是从底部SnackBar显示的常规行为。SnackBar这很容易破解吗?

4

4 回答 4

6

有可能的。检查我制作的这个库https://github.com/AndreiD/TSnackBar

基本上你添加了 2 个从顶部滑动的新动画,并改变了布局的重力。就这样 :)

稍后编辑:有一个错误正在发生...... 如果有人想花一些时间来修复它,我们都会很感激 :)

于 2015-10-25T18:40:22.103 回答
5

不,这是不可能的。该文件指出

它们在移动设备的屏幕底部和较大设备的左下方显示一条简短消息。Snackbars 出现在屏幕上所有其他元素的上方,一次只能显示一个。

您可以使用第三方库,例如Crouton

于 2015-07-27T18:02:42.663 回答
5
 CoordinatorLayout   coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinatorLayout);
  Snackbar snackbar = Snackbar.make(coordinatorLayout, "Text", Snackbar.LENGTH_LONG);
   View view = snackbar.getView();
   CoordinatorLayout.LayoutParams params =(CoordinatorLayout.LayoutParams)view.getLayoutParams();
                params.gravity = Gravity.TOP;
                view.setLayoutParams(params);
      snackbar.show();
于 2016-04-21T11:28:08.997 回答
0

编辑:此解决方案将 Snackbar 呈现在顶部,但动画来自底部。

这是可能的,至少使用Android 材料库和一个小技巧是可能的。您可以将snackbar 绑定到呈现在顶部位置的视图,如下所示:

activity_main.xml

<!-- rest of the components here -->

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:id="@+id/top_coordinator"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"/>

MainActivity.kt

val snackbar = Snackbar.make(
    findViewById(R.id.top_coordinator),
    "Hello World",
    Snackbar.LENGTH_INDEFINITE
)

snackbar.show()
于 2019-06-13T01:50:03.827 回答