Android - 我的 Snackbar 出现在底部导航栏的前面而不是它的上方,如何解决?
Posted
技术标签:
【中文标题】Android - 我的 Snackbar 出现在底部导航栏的前面而不是它的上方,如何解决?【英文标题】:Android - My Snackbar appears in front of my Bottom Nav Bar instead above it, how to fix it? 【发布时间】:2018-08-23 12:22:35 【问题描述】:因为我的 Snackbar 在底部导航栏前面弹出,我已经卡了好几个小时了。
我的布局有问题吗?
是布局的嵌套吗?
感谢任何答案,谢谢:D
我的主布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_
android:layout_
android:fitsSystemWindows="true"
tools:openDrawer="start">
<android.support.design.widget.CoordinatorLayout xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/overview_coordinator_layout"
android:layout_
android:layout_>
<RelativeLayout
android:layout_
android:layout_
android:orientation="vertical">
<include
layout="@layout/app_bar_home"
android:layout_
android:layout_ />
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:background="@color/colorNavIcon"
app:itemIconTint="@color/colorNavIcon"
app:itemTextColor="@color/colorNavText"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation" />
</RelativeLayout>
</android.support.design.widget.CoordinatorLayout>
<FrameLayout
android:id="@+id/frame_layout"
android:layout_
android:layout_
android:layout_above="@+id/navigation"
android:animateLayoutChanges="true">
</FrameLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_
android:layout_
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_home"
app:menu="@menu/activity_home_drawer" />
应用栏布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context="com.project.adrianangub.project_adesua.home">
<android.support.design.widget.AppBarLayout
android:layout_
android:layout_
android:theme="@style/AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
android:background="?attr/colorPrimaryDark"
app:popupTheme="@style/PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_home" /></android.support.design.widget.CoordinatorLayout>
我的 Snackbar 的 Java 代码:
Snackbar.make(findViewById(R.id.overview_coordinator_layout), "Can you smell what The Rock is cooking?", Snackbar.LENGTH_LONG).show();
这里的图片:
如果你们需要查看更多代码部分,请在此处评论:D
【问题讨论】:
See this question 可能会有帮助 【参考方案1】:您以错误的方式使用协调器小部件。永远记住协调者的孩子的层次结构必须是:
<CoordinatorLayout>
<Appbar/>
<View/> <!--Mostly NestedScrollView or something scrollable-->
<fab/> <!--Optional-->
<bottomBar/> <!--Optional-->
</CoordinatorLayout>`
所以您的main_layout.xml
必须更改为:
<android.support.v4.widget.DrawerLayout>
.
.
.
<android.support.design.widget.CoordinatorLayout
android:id="@+id/overview_coordinator_layout"
android:layout_
android:layout_>
<android.support.design.widget.AppBarLayout
android:layout_
android:layout_
android:theme="@style/AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
android:background="?attr/colorPrimaryDark"
app:popupTheme="@style/PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_home" />
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:background="@color/colorNavIcon"
android:layout_gravity="bottom"
app:itemIconTint="@color/colorNavIcon"
app:itemTextColor="@color/colorNavText"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation" />
</android.support.design.widget.CoordinatorLayout>
.
.
.
</android.support.v4.widget.DrawerLayout>
为了显示 SnackBar,请使用以下代码:
Snackbar.make(findViewById(overview_coordinator_layout), "Hello!", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
【讨论】:
以上是关于Android - 我的 Snackbar 出现在底部导航栏的前面而不是它的上方,如何解决?的主要内容,如果未能解决你的问题,请参考以下文章