我想从顶部提供SnackBar
动画,而不是从底部显示SnackBar
的常规行为。这容易破解吗?
这是可能的。查看我制作的这个库https://github.com/AndreiD/TSnackBar
基本上你添加了2个新的动画从顶部滑动,并改变布局的重力。就这些了:)
稍后编辑:有一个bug正在.... .如果有人想花点时间来修复它,我们都很感激:)
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();
不可能。文档说明
它们在手机屏幕的底部显示一条简短的消息在较大的设备上左下角。零食排在所有其他零食的前面元素,一次只能显示一个。
您可以使用第三方库,例如Crouton
EDIT:此解决方案将Snackbar呈现在顶部,但动画从底部呈现。
这是可能的,至少有Android材质库和一个小技巧。你可以像这样将snackbar绑定到在顶部位置呈现的视图:
On 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"/>
On MainActivity.kt
:
val snackbar = Snackbar.make(
findViewById(R.id.top_coordinator),
"Hello World",
Snackbar.LENGTH_INDEFINITE
)
snackbar.show()