我想为带有导航抽屉的活动做一个布局,如下所示:
Navigation drawer closed:
-------------------------
| |
| |
| |
| 1 |
| |
| |
| |
| |
| |
| |
| |
|-----------------------|
| 2 |
-------------------------
Navigation drawer open:
-------------------------
| | |
| | |
| 3 | |
| | 1 |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
|-----------------------|
| 2 |
-------------------------
第1节和第3节应该在同一个DrawerLayout内(main_section
内)。
第2节和main_section
应该在活动中处于同一层级。
但是,DrawerLayout的文档指出' DrawerLayout充当窗口内容的顶级容器,允许交互式"抽屉"从窗户边缘拉出的景色。'所以我想使用DrawerLayout计划实现的是不可能的,因为我需要DrawerLayout作为父布局。
我该怎么做才能实现上面的布局结构?
更新 也许我可能需要添加更多我的要求的详细信息。第2节不应在视觉上或功能上受导航抽屉状态的影响。这意味着当抽屉打开时,第2节不应像第1节那样变暗,而第2节的触摸不应该关闭抽屉。无论抽屉是否打开,第2部分应始终处于活动状态并响应用户交互。
答案 0 :(得分:0)
好的,我明白了。
以下是我的代码解决方案的片段:
fragment_navigation_drawer.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/navigation_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cccc"
android:orientation="vertical"
tools:context=".NavigationDrawerFragment">
<!-- add the content of the Section 3 (the navigation drawer) here.
this entire xml file could be a listview
instead of a linear layout, btw. -->
</LinearLayout>
fragment_main.xml:
<RelativeLayout 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:background="#ccc"
tools:context=".MainActivity$PlaceholderFragment">
<!-- add the content of the Section 1 here. -->
</RelativeLayout>
activity_main.xml中:
<LinearLayout
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:orientation="vertical"
tools:context=".MainActivity">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="7"
tools:context=".MainActivity">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<fragment android:id="@+id/navigation_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:name=".NavigationDrawerFragment"
tools:layout="@layout/fragment_navigation_drawer" />
</android.support.v4.widget.DrawerLayout>
<!-- This button below itself is the Section 3. -->
<Button
android:text="@string/hello_world"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#F66"
android:onClick="test"/>
</LinearLayout>