【问题标题】:Navigation Drawer in Fragment or Activity?片段或活动中的导航抽屉?
【发布时间】:2014-03-24 01:27:02
【问题描述】:

我正在尝试将导航抽屉添加到将包含一个或两个片段的活动。无论显示多少片段,我都希望这个活动有一个与之关联的导航抽屉。为此,我想我需要两个 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>

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

【问题讨论】:

    标签: java android android-fragments navigation


    【解决方案1】:

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

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

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

    【讨论】:

    • 这是真的。我做了这个修复,导航抽屉仍然在其余内容之下。
    • 确实如此。抽屉已正确添加。我只是好奇为什么它会在片段内容下。由于片段视图是第二个添加的,所以它会在顶部吗?
    • 很难理解问题出在哪里,因为您发布的代码与您运行的代码明显不同,因为您说它适用于您!
    猜你喜欢
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多