現在、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
の下で始まりますが、ドキュメントによると、ほとんどの機能は の直接の子である必要があります。AppBarLayout
AppBarLayout
CoordinatorLayout
marginTop
に aを追加することもできFrameLayout
ますが、これに対する適切な解決策があるかどうかを知りたいです。ヒントをお寄せいただきありがとうございます!