如何将 BottomNavigationView 与 NavigationView 一起对齐到 Activity 的底部?

Posted

技术标签:

【中文标题】如何将 BottomNavigationView 与 NavigationView 一起对齐到 Activity 的底部?【英文标题】:How to align BottomNavigationView to the bottom on an activity along with NavigationView? 【发布时间】:2017-08-13 08:05:29 【问题描述】:

我正在尝试在同一个活动中实现BottomNavigationViewNavigationView,但BottomNavigationView 似乎没有走到最后。

由于 BottomNavigationView 位于活动的中心。我通过互联网浏览了这个问题,但没有找到任何解决方案。

我的 XML 代码:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:layout_
    android:layout_
    android:id="@+id/main_content">

    <include layout="@layout/search_toolbar"/>


</RelativeLayout>

<android.support.design.widget.NavigationView
    android:id="@+id/main_drawer"
    android:layout_
    android:layout_
    app:menu="@menu/navigation_menu"
    android:layout_gravity="start"
    app:itemTextColor="#e6000000"
    app:itemIconTint="#8c000000"
    app:headerLayout="@layout/navigation_header">
</android.support.design.widget.NavigationView>

<android.support.design.widget.BottomNavigationView
    android:id="@+id/bottom_navigation_bar"
    android:layout_
    android:layout_
    android:layout_gravity="bottom"
    android:itemBackground="@color/colorPrimary"
    app:menu="@menu/bottom_navigation" />

显示错误: onMeasureError

java.lang.IllegalStateException: Child android.support.design.widget.BottomNavigationView64f98f6c V.E...... ......I. 0,0-0,0 #7f0c0080 app:id/bottom_navigation_bar at index 2 does not have a valid layout_gravity - must be Gravity.LEFT, Gravity.RIGHT or Gravity.NO_GRAVITY
at android.support.v4.widget.DrawerLayout.onMeasure_Original(DrawerLayout.java:1112)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java)
at android.view.View.measure(View.java:19734)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:19734)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure(View.java:19734)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.measureView(RenderSessionImpl.java:589)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:342)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:368)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:567)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:549)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:863)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:549)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$1(RenderTask.java:680)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

【问题讨论】:

【参考方案1】:

试试这个:

<?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"
    android:layout_
    android:layout_>

    <RelativeLayout
        android:id="@+id/main_content"
        android:layout_
        android:layout_>

        <include layout="@layout/search_toolbar" />


        <android.support.design.widget.BottomNavigationView
            android:id="@+id/bottom_navigation_bar"
            android:layout_
            android:layout_
            android:layout_alignParentBottom="true"
            android:itemBackground="@color/colorPrimary"
            app:menu="@menu/bottom_navigation" />
    </RelativeLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/main_drawer"
        android:layout_
        android:layout_
        android:layout_gravity="start"
        app:headerLayout="@layout/navigation_header"
        app:itemIconTint="#8c000000"
        app:itemTextColor="#e6000000"
        app:menu="@menu/navigation_menu" />

</android.support.v4.widget.DrawerLayout>

【讨论】:

非常感谢。这解决了我的问题。再次感谢。 我已经寻找解决方案 1 周了。你救了我的命。非常感谢

以上是关于如何将 BottomNavigationView 与 NavigationView 一起对齐到 Activity 的底部?的主要内容,如果未能解决你的问题,请参考以下文章

如何将高程(阴影)添加到我的 BottomNavigationView。默认情况下不会出现

如何更改选定的 BottomNavigationView 图标大小

如何在Android的BottomNavigationView中设置填充项

BottomNavigationView - 如何避免重新创建片段并重用它们

如何使用 Kotlin 在 android 中的 BottomNavigationView 上设置 OnNavigationItemListener?

BottomNavigationView - 如何获取选定的菜单项?