我正在构建一个Android应用程序,该应用程序利用导航抽屉UI模式进行顶级导航。为了实现这一点,我创建了一个自定义Activity
(称为DrawerActivity
),可自动初始化DrawerLayout
。对于每个DrawerActivity's
"内容"查看,我想使用Fragments
。
默认情况下,每个DrawerActivity
都会使以下布局膨胀:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_drawerLayout"
tools:context=".activities.DrawerActivity">
<FrameLayout
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<ListView
android:id="@+id/drawer"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:background="@color/drawer_background" />
</android.support.v4.widget.DrawerLayout>
我也会使用我的应用程序支持各种大小的平板电脑,因此我需要能够将Fragments
动态加载到主内容&#34;内容中。视图的布局。没问题,我已经知道如何初始化FragmentTransaction
以便为我处理。
然而,当我有一个&#34;内容&#34;时,DrawerLayout
似乎只能正常工作。小部件,通常由FrameLayout
放置。如果我想用FrameLayout
替换Fragment
,我只需构建FragmentTransaction
并从那里开始。但是,我希望在必要时自动充气两个或更多Fragments
(取决于用户是否使用平板电脑)。
我的问题:最好的&#34;最好的&#34;使用Fragments
构建我的UI的方法,同时支持导航抽屉UI模式?我应该为<include />
&#34;内容&#34;使用DrawerActivity's
标记。视图(根据方向和屏幕大小自动选择所需的正确布局),还是应该自己加载Fragments
?
答案 0 :(得分:1)
这可以通过构建具有相同名称的单独布局并将其放在'res / layout-sw600dp'目录中来完成:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_drawerLayout"
tools:context=".activities.DrawerActivity">
<LinearLayout
android:id="@+id/content_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientaion="horizontal" >
<FrameLayout
android:id="@+id/content_start"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:weight="1" />
<FrameLayout
android:id="@+id/content_end"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:weight="1" />
</LinearLayout>
<ListView
android:id="@+id/drawer"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:background="@color/drawer_background" />
</android.support.v4.widget.DrawerLayout>
然后,您可以以编程方式检查content_container id并根据它是否存在加载相应的片段。