FABを配置できません。右下にあるはずですが、BottonNavigationViewの上にあります。
1)coordinateLayout内のRelativeLayoutなしでこれを達成できますか?
2)方法を教えてください
3)フラグメントのコンテナとしてFrameLayoutを使用する必要がありますか?
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/main_content"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true">
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:paddingTop="@dimen/appbar_padding_top"
Android:theme="@style/AppTheme.AppBarOverlay">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay">
</Android.support.v7.widget.Toolbar>
</Android.support.design.widget.AppBarLayout>
<FrameLayout
Android:id="@+id/fragment_container"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</FrameLayout>
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/fab_electricity"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="end|bottom"
Android:layout_margin="@dimen/fab_margin"
app:layout_anchorGravity="bottom|right|end"
app:srcCompat="@drawable/ic_add_electro" />
<Android.support.design.widget.BottomNavigationView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentBottom="true"
Android:layout_gravity="bottom">
</Android.support.design.widget.BottomNavigationView>
</Android.support.design.widget.CoordinatorLayout>
FloatingActionButton.Behavior
をすばやく検索すると、次のことがわかります。
@Override
public void onAttachedToLayoutParams(@NonNull CoordinatorLayout.LayoutParams lp) {
if (lp.dodgeInsetEdges == Gravity.NO_GRAVITY) {
// If the developer hasn't set dodgeInsetEdges, lets set it to BOTTOM so that
// we dodge any Snackbars
lp.dodgeInsetEdges = Gravity.BOTTOM;
}
}
BottomNavigationView
もレイアウトの下部にあるため。次の要素をBottomNavigationView
に追加するとCoordinatorLayout
が挿入と覆い焼きを自動的に処理します。
app:layout_insetEdge="bottom"
線形レイアウトで貼り付けて、下部のナビゲーションをコーディネータービューの外側に移動すると、画面上でその下に移動します。
この方法でそれを行うこともできますが、ホスティングアクティビティに配置した空のフラグメントコンテナを使用して、その中にフラグメントをコードで配置することをお勧めします。
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:paddingTop="@dimen/appbar_padding_top"
Android:theme="@style/AppTheme.AppBarOverlay">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay">
</Android.support.v7.widget.Toolbar>
</Android.support.design.widget.AppBarLayout>
<FrameLayout
Android:id="@+id/fragment_container"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</FrameLayout>
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/fab_electricity"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom|right"
app:srcCompat="@drawable/ic_add_electro"/>
</Android.support.design.widget.CoordinatorLayout>
<Android.support.design.widget.BottomNavigationView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentBottom="true"
Android:layout_gravity="bottom">
</Android.support.design.widget.BottomNavigationView>
</LinearLayout>