現在、Android のデザイン サポート ライブラリで問題がFrameLayout発生していますが、この投稿CoordinatorLayoutの手順に従ってタブを作成しました。
基本的に、ほとんどのことが期待どおりに機能し、コンテナ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の下で始まりますが、ドキュメントによると、ほとんどの機能は の直接の子である必要があります。AppBarLayoutAppBarLayoutCoordinatorLayout
marginTopに aを追加することもできFrameLayoutますが、これに対する適切な解決策があるかどうかを知りたいです。ヒントをお寄せいただきありがとうございます!
