【发布时间】:2015-10-18 01:12:30
【问题描述】:
我想从顶部提供SnackBar 动画,而不是从底部显示SnackBar 的常规行为。这很容易破解吗?
【问题讨论】:
标签: android android-support-library android-support-design android-snackbar
我想从顶部提供SnackBar 动画,而不是从底部显示SnackBar 的常规行为。这很容易破解吗?
【问题讨论】:
标签: android android-support-library android-support-design android-snackbar
这是可能的。 检查我制作的这个库https://github.com/AndreiD/TSnackBar
基本上,您添加 2 个新动画用于从顶部滑动,并更改布局的重力。就是这样:)
稍后编辑:有一个错误正在发生......如果有人想花一些时间来修复它,我们将不胜感激:)
【讨论】:
不,这是不可能的。该文档指出
它们会在移动设备屏幕的底部显示一条简短消息,并且 在较大的设备上左下方。小吃店出现在所有其他之上 屏幕上的元素,一次只能显示一个。
您可以使用第三方库,例如 Crouton
【讨论】:
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();
【讨论】:
编辑:此解决方案将 Snackbar 呈现在顶部,但动画来自底部。
这是可能的,至少有Android Material 库和一个小技巧。 您可以将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()
【讨论】: