Android抽屉布局在片段内容下显示

时间:2014-03-29 15:41:58

标签: java android android-layout listview android-fragments

我在我的Actvity中添加了一个使用片段的抽屉布局。我按照android文档中描述here实现了这个。抽屉布局适配器和查看所有工作,他们出现,但抽屉延伸"在"片段内容。以下是正在发生的事情的图片:enter image description here

有谁知道为什么会这样?我的活动xml代码和actiity add片段如下:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alarm_list); // for drawer navigation
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager
            .beginTransaction();
    fragmentTransaction.replace(android.R.id.content,
            new AlarmListFragment());
    fragmentTransaction.commit();
    setUpDrawer(fragmentManager);
}

    private void setUpDrawer(FragmentManager fm) {
    String[] drawerItems = getResources().getStringArray(
            R.array.drawer_array);
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ListView drawerList = (ListView) findViewById(R.id.left_drawer);

    // Set the adapter for the list view
    drawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.item_nav_drawer, drawerItems));
    // Set the list's click listener
    drawerList.setOnItemClickListener(new
            DrawerItemClickListener(drawer,drawerList,drawerItems,fm));
}

布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 
       xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView
        android:id="@+id/alarm_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
</FrameLayout>

<ListView
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#111"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp" />

</android.support.v4.widget.DrawerLayout>

我是否必须在某处设置z-index?我可以提供所需的任何进一步信息我真的很想弄清楚这一点!

2 个答案:

答案 0 :(得分:1)

我不会产生这个问题,但要解决它,你必须将片段添加到具有id = content_frame的FrameLayout的内容中。

所以编辑这一行

fragmentTransaction.replace(android.R.id.content,
        new AlarmListFragment());

 fragmentTransaction.replace(R.id.content_frame,
        new AlarmListFragment());

答案 1 :(得分:0)

您可以在XML中将Fragment容器下方的抽屉布局移动。这将在应用程序的前视图中呈现DrawerLayout。请确保不要使用抽屉的父容器覆盖片段容器,以便在需要时可以访问片段。

<RelativeLayout
    android:id="@+id/my_parent_container"
    android:layout_height="match_parent"
    android:layout_width="match_parent" 
    tools:context=".MainActivity"
    xmlns:tools="http://schemas.android.com/tools">
<FrameLayout
    android:id="@+id/fragment_wrapper"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"></FrameLayout>

<android.support.v4.widget.DrawerLayout
        android:id="@+id/my_drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns="http://schemas.android.com/apk/res/android">

        <RelativeLayout
             android:id=@+id/drawer_pane"
             android:layout_width="250dp"
             android:layout_height="match_parent"
             android:layout_gravity="end" />
        <ListView xmlns="http://schemas.android.com/apk/res/android"
                android:layout_width="280dp"
                android:layout_height="match_parent"
                android:choiceMode="singleChoice"
                android:id="@+id/menu_list"
</android.support.v4.widget.DrawerLayout>
</RelativeLayout>