【问题标题】:Showing Snackbar shows hidden bottom sheet as well?显示 Snackbar 是否也显示隐藏的底页?
【发布时间】:2017-08-24 23:39:53
【问题描述】:

我有一个带有协调器布局的活动。协调器布局内部是一个视图,它继承了 Google 支持库底部表的默认底部表布局行为。问题是当我以协调器布局作为视图调用 Snackbar.show() 时,底页也会弹出。

这是显示快餐栏的调用:

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>

【问题讨论】:

  • 你找到解决办法了吗?

标签: android


【解决方案1】:

这是一个较晚的答案,但可能对其他人有帮助。 如果您使用的是DialogBottomSheetDialog,则可以显示Snackbar,以提供顶级窗口装饰视图。

这是我在 Kotlin 中的解决方案:

    Snackbar.make(
            dialog.window.decorView,                   // important part
            "your-string",
            Snackbar.LENGTH_SHORT
    ).show()

【讨论】:

  • 这个“迟到”的答案节省了我的时间。非常感谢
  • 你为我节省了很多时间。
【解决方案2】:

使用dialog.window.decorView 的解决方案出现在我的Android 软导航键上。相反,我将 Snackbar 的高度调整为大于BottomSheetDialog 的高度。

这将 Snackbar 保持在 y 轴上的正确位置,并且新的高度将其带到底部工作表上方:

Snackbar.make(binding.root, "Example", Snackbar.LENGTH_LONG)
    .apply {
        view.elevation = 1000F
    }.show()

【讨论】:

  • 它不起作用,在 MaterialDialogs 中使用 BottomSheet 时很轻松。无论如何,小吃栏都在对话框下方。
【解决方案3】:
Snackbar.make(
                dialog.window.decorView,                   
                "your-string",
                Snackbar.LENGTH_SHORT
        ).show()

还可以向 SnackBar 添加锚视图(您可以在布局中的根视图底部添加视图并将其用作 SnackBar 中的锚视图)

例如,

snackbar.setAnchorView(your_view_here)

【讨论】:

    猜你喜欢
    • 2019-12-15
    • 2020-06-26
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多