来自顶部的SnackBar。这可能吗?

时间:2015-07-27 17:59:28

标签: android android-support-library android-support-design android-snackbar

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

4 个答案:

答案 0 :(得分:5)

不,不可能。文档说明了

  

他们在移动设备屏幕的底部上显示简短信息   在较大的设备上左下角。 Snackbars高于其他所有   屏幕上的元素,一次只能显示一个。

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

答案 1 :(得分:4)

有可能。 检查我https://github.com/AndreiD/TSnackBar

创建的这个库

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

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

答案 2 :(得分:3)

 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();

答案 3 :(得分:0)

编辑:此解决方案在顶部显示Snackbar,但动画从底部显示。

至少可以使用Android Material库和一些技巧来实现。 您可以将快餐栏绑定到在顶部位置呈现的视图,如下所示: 在activity_main.xml上:

<FrameLayout>

    <!-- 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"/>
</FrameLayout>

在MainActivity.kt上:

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

snackbar.show()