碎片或活动中的导航抽屉?

时间:2014-03-24 01:27:02

标签: java android android-fragments navigation

我正在尝试将导航抽屉添加到包含一个或两个片段的活动中。无论显示多少片段,我希望此活动有一个与之关联的导航抽屉。要做到这一点,我想我需要两个xml文件,一个用于活动,一个用于片段。这似乎有效,除了当导航抽屉打开时,它在正常内容视图“下”。难道我做错了什么?或者有没有办法增加抽屉的z索引?

这是活动中的onCreate(),

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

这是我的xml布局:

的活动:

<?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" >

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

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

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

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

片段:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ListView
    android:id="@id/android:list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</ListView>

</LinearLayout>

我会对如何解决这个问题提出任何建议!谢谢!

1 个答案:

答案 0 :(得分:2)

我想知道代码是如何为你工作的。上面的代码不起作用。您将片段放在android.R.id.content。但我没有在DrawerLayout你的Activity XML中看到它。此外,抽屉布局应该只有FrameLayout(在您的情况下为id'内容')和ListView,如上所述here。因此,您需要在要实现导航抽屉的Activity XML中添加如下所示的FrameLayout

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

此外,您还必须将xml移动到另一个片段中,您可以在活动开始时或需要时加载它。