顶部的 SnackBar。这可能吗?
SnackBar from top. Is this possible?
我想从顶部提供 SnackBar
动画,而不是从底部显示 SnackBar
的常规行为。这很容易破解吗?
不,这是不可能的。文档指出
They show a brief message at the bottom of the screen on mobile and
lower left on larger devices. Snackbars appear above all other
elements on screen and only one can be displayed at a time.
您可以使用第三方库,例如 Crouton
有可能。
检查我制作的这个库 https://github.com/AndreiD/TSnackBar
基本上你添加了 2 个新的从顶部滑动的动画,并改变了布局的重力。就这样:)
稍后编辑:出现了一个错误......如果有人想花一些时间来修复它,我们都会很感激:)
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()
我想从顶部提供 SnackBar
动画,而不是从底部显示 SnackBar
的常规行为。这很容易破解吗?
不,这是不可能的。文档指出
They show a brief message at the bottom of the screen on mobile and lower left on larger devices. Snackbars appear above all other elements on screen and only one can be displayed at a time.
您可以使用第三方库,例如 Crouton
有可能。 检查我制作的这个库 https://github.com/AndreiD/TSnackBar
基本上你添加了 2 个新的从顶部滑动的动画,并改变了布局的重力。就这样:)
稍后编辑:出现了一个错误......如果有人想花一些时间来修复它,我们都会很感激:)
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()