Android design-support libraryからのFrameLayout
内のCoordinatorLayout
で問題が発生していますが、これからの指示に従いました post タブの作成中。
基本的にほとんどのものは期待どおりに機能します。コンテナーフラグメントはFrameLayout
にインフレートされ、それらのタブフラグメントはタブとしてViewPager
に正しく追加されます(多数のフラグメントがあるため、この方法が必要です)レイアウトを再利用する必要があります)。
私が苦労している問題は、FrameLayout
(結果としてタブフラグメントも)が画面の高さ全体を消費するため、Toolbar
とTabLayout
が重複することです。 。問題を視覚化するために、次の画像を作成しました。
CoordinatorLayout
、Toolbar
、およびTabLayout
を使用した基本レイアウト:
_<Android.support.design.widget.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"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<include layout="@layout/toolbar" />
<Android.support.design.widget.TabLayout
Android:id="@+id/tabLayout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</Android.support.design.widget.AppBarLayout>
<FrameLayout
Android:id="@+id/container"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
</Android.support.design.widget.CoordinatorLayout>
_
container
:に展開されたフラグメントによって使用される個別のレイアウト
_<Android.support.v4.view.ViewPager
Android:id="@+id/viewPager"
Android:layout_height="match_parent"
Android:layout_width="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
_
すべてのフラグメントは、私のBaseFragment
- classによって膨張します(SOを呼び出す別の投稿でinflater.inflate(getLayoutRes(), null);
を呼び出すと、同じ問題が発生する問題でした)
_@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(getLayoutRes(), container, false);
}
_
CoordinatorLayout
を通常のLinearLayout
に置き換えた場合、FrameLayout
はAppBarLayout
の下から始まりますが、予想どおり documentationAppBarLayout
のほとんどの機能では、CoordinatorLayout
の直接の子である必要があります。
marginTop
をFrameLayout
に追加することもできますが、これに適切な解決策があるかどうか知りたいです。ヒントを事前にありがとう!
app:layout_behavior="@string/appbar_scrolling_view_behavior"
からFrameLayout
へ-その属性はCoordinatorLayout
の直接の子にある必要があります。