为了解决这个问题,可以使用CoordinatorLayout来替代嵌套的ScrollView,并将其与AppBarLayout结合起来。这样做可以让Snackbar显示在AppBarLayout底部,而不是ScrollView上方。
以下是示例代码:
- 首先,在XML布局文件中添加CoordinatorLayout和AppBarLayout:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Your toolbar and other views go here -->
</android.support.design.widget.AppBarLayout>
<!-- Your scrollable content goes here -->
</android.support.design.widget.CoordinatorLayout>
- 接下来,在代码中使用Snackbar.make()函数创建Snackbar对象,并将其与CoordinatorLayout关联:
CoordinatorLayout coordinatorLayout = findViewById(R.id.coordinatorLayout);
Snackbar snackbar = Snackbar.make(coordinatorLayout, "Message", Snackbar.LENGTH_LONG);
snackbar.show();
- 最后,在AppBarLayout中添加一个Snackbar的容器视图:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Your toolbar and other views go here -->
<LinearLayout
android:id="@+id/snackbar_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical"/>
</android.support.design.widget.AppBarLayout>
<!-- Your scrollable content goes here -->
</android.support.design.widget.CoordinatorLayout>
这样做可以将Snackbar容器视图与AppBarLayout相关联,并确保Snackbar始终显示在AppBar