web-dev-qa-db-ja.com

BottomNavigation CoordinatorLayoutをAndroidで表示する方法

私のアプリケーションでは、BottomNavigationの下部にCoordinatorLayoutを表示したいので、以下のコードを記述します。

<?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_width="match_parent"
    Android:layout_height="match_parent"
    Android:fitsSystemWindows="true"
   >

    <Android.support.design.widget.AppBarLayout
        Android:id="@+id/main.appbar"
        Android:layout_width="match_parent"
        Android:layout_height="150dp"
        Android:fitsSystemWindows="true"
        Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <Android.support.design.widget.CollapsingToolbarLayout
            Android:id="@+id/main.collapsing"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">


            <include
                Android:id="@+id/mainToolbar"
                layout="@layout/toolbar_main" />

        </Android.support.design.widget.CollapsingToolbarLayout>

    </Android.support.design.widget.AppBarLayout>


    <com.aurelhubert.ahbottomnavigation.AHBottomNavigationViewPager
        Android:id="@+id/mainViewPager"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_above="@+id/mainBottomNavigation"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <com.aurelhubert.ahbottomnavigation.AHBottomNavigation
        Android:id="@+id/mainBottomNavigation"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        app:layout_anchorGravity="bottom"
        app:selectedBackgroundVisible="true" />

</Android.support.design.widget.CoordinatorLayout>

しかし、アプリケーションを実行すると、BottomNavigation top of CoordinatorLayout

BottomNavigationの下部にCoordinatorLayoutを表示するにはどうすればよいですか?

9
OoO 3

答えが遅すぎないことを願っています。同じ問題が発生したので、Android:layout_gravity = "bottom"を使用しました。ツールバーとBottomNavigationViewがあり、中央にフラグメントのプレースホルダーとして使用されるFrameLayoutがあります。これが私のXMLレイアウトです:

<?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"
  Android:layout_width="match_parent"
  Android:layout_height="match_parent"
  Android:background="@drawable/bg_main"
  Android:minHeight="?attr/actionBarSize">

<Android.support.design.widget.AppBarLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="@color/colorTab"
    app:layout_scrollFlags="scroll|enterAlways"
    />
</Android.support.design.widget.AppBarLayout>

<FrameLayout
    Android:id="@+id/fragment_placeholder"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    >

    <Android.support.v4.view.ViewPager
        Android:id="@+id/slide_viewpager"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"/>

</FrameLayout>

<Android.support.design.widget.BottomNavigationView
    Android:id="@+id/bottom_navigation"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_gravity="bottom"
    app:itemBackground="@color/colorTab"
    app:itemIconTint="@drawable/bottom_navigation_toolbar"
    app:itemTextColor="@drawable/bottom_navigation_toolbar"
    app:menu="@menu/bottom_bar"
    />

</Android.support.design.widget.CoordinatorLayout>

また、 this の質問も確認してください。ほぼ同じレイアウトを使用し、スクロール時に非表示になるようにBottomNavigationViewの動作を変更する方法も示しています。その機能を実装したい場合は、クラスBottomNavigationBehavior(または呼び出したいもの)を作成し、この行をXMLのBottomNavigationViewに追加してください。 :

app:layout_behavior="com.yourpackage.yourpackage.BottomNavigationBehavior"

それが役に立てば幸い!

21
Suleyman