我有一个协调员布局的活动。协调器布局内部是一个视图,它继承了Google支持库底部工作表的默认底部工作表布局行为。问题是当我用协调器布局作为视图调用Snackbar.show()时,底部弹出窗口。
以下是显示snackbar的电话:
Snackbar.make(coordinatorLayout, R.string.status_image_saved,
Snackbar.LENGTH_SHORT).show();
这是布局:
<android.support.design.widget.CoordinatorLayout>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout>
<android.support.v7.widget.Toolbar />
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView />
</android.support.constraint.ConstraintLayout>
<LinearLayout
android:id="@+id/attachment_selector"
android:layout_width="match_parent"
android:layout_height="480dp"
android:background="@color/colorBack"
android:elevation="10dp"
android:orientation="vertical"
app:behavior_hideable="true"
app:behavior_peekHeight="@dimen/bottom_sheet_start"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
<android.support.design.widget.TabLayout
android:id="@+id/attachment_selector_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabMode="fixed" />
<android.support.v4.view.ViewPager
android:id="@+id/attachment_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
答案 0 :(得分:6)
对我来说,使用 dialog.window.decorView
的解决方案出现在 Android 的软导航键上。相反,我将 Snackbar 的高度改为大于 BottomSheetDialog
的高度。
这使 Snackbar 保持在 y 轴上的正确位置,新的高度使其位于底部工作表上方:
Snackbar.make(binding.root, "Example", Snackbar.LENGTH_LONG)
.apply {
view.elevation = 1000F
}.show()
答案 1 :(得分:3)
这是一个较晚的答案,但可能会对其他人有所帮助。
如果您使用的是Dialog
或BottomSheetDialog
,则可以显示Snackbar
,以提供顶级窗口装饰视图。
这是我在科特林中的解决方案:
Snackbar.make(
dialog.window.decorView, // important part
"your-string",
Snackbar.LENGTH_SHORT
).show()
答案 2 :(得分:0)
Snackbar.make(
dialog.window.decorView,
"your-string",
Snackbar.LENGTH_SHORT
).show()
还向 SnackBar 添加锚视图(您可以在布局中的根视图底部添加视图,并将其用作 SnackBar 中的锚视图)
例如
snackbar.setAnchorView(your_view_here)