Android:添加RecyclerView后,导航/汉堡菜单无法打开

时间:2015-03-08 00:46:49

标签: java android android-studio android-recyclerview appbar

我的最终目标是创建一个简单的材料设计待办事项列表。我只是处于早期阶段,但我遇到的问题似乎无法解决。当我将回收者视图添加到主活动时,导航菜单不会显示从左侧滑动或当我点击汉堡包菜单时。当我评论它时,它工作正常。有谁知道这个问题是什么?我非常确定这是一件简单的事情,但我已经在线研究了StackOverflow,并且似乎无法得出答案。你们过去都非常乐于助人,我希望能再次发生一些魔力!

我在这里按照教程系列进行了一次小调整,从视频#6开始,我希望在主要活动中使用回收器视图,而不是导航抽屉: https://www.youtube.com/playlist?list=PLonJJ3BVjZW6CtAMbJz1XD8ELUs1KXaTD

谢谢!

以下是有问题的布局:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="match_parent"
    android:layout_width="match_parent" >

    <!-- Navigation Drawer -->
    <LinearLayout
        android:id="@+id/drawer_layout_overall"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <!-- Include app_bar so the bar shows after drawer is opened -->
        <include
            android:id="@+id/app_bar"
            layout="@layout/app_bar" />

        <android.support.v4.widget.DrawerLayout
            android:id="@+id/drawer_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

            <fragment
                android:id="@+id/fragment_navigation_drawer"
                android:name="cca.habitrpgnativeclient.com.NavigationDrawerFragment"
                android:layout_width="@dimen/nav_drawer_width"
                android:layout_height="match_parent"
                android:layout_gravity="start"
                app:layout="@layout/fragment_navigation_drawer"
                tools:layout="@layout/fragment_navigation_drawer" />

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



    </LinearLayout>

    <!-- Tasks -->
    <!--<android.support.v7.widget.RecyclerView-->
        <!--android:id="@+id/tasks_layout"-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="wrap_content"-->
        <!--android:paddingTop="@dimen/app_bar_top_padding"-->
        <!--android:paddingLeft="@dimen/tasks_left_padding" />-->

</RelativeLayout>

此外,这是有问题的方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Setup toolbar
    toolbar= (Toolbar) findViewById(R.id.app_bar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    // Setup navigation menu
    NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment)
                getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
    drawerFragment.setUp(((DrawerLayout) findViewById(R.id.drawer_layout)), toolbar);

    // Setup tasks
//        recyclerView  = (RecyclerView) findViewById(R.id.tasks_layout);
//        taskAdapter = new TaskAdapter(this, getTasks());
//        recyclerView.setAdapter(taskAdapter);
//        recyclerView.setLayoutManager(new LinearLayoutManager(this));

}

(感谢您的编辑,我也添加了其他方法)

1 个答案:

答案 0 :(得分:0)

目前,您的RecyclerView正在Z轴上覆盖LinearLayout(包含您的DrawerLayout)。因此,您的DrawerLayout不会收到任何触摸事件,这就是您的边框滑动不起作用的原因。显然,app_bar <include>Toolbar,我认为你的汉堡包是,而RecyclerView也覆盖了这个,这就是为什么不起作用。< / p>

您的活动的主要用户界面位于您拥有FrameLayout的位置。因此,要么将FrameLayout替换为RecyclerView,要么将RecyclerView替换为FrameLayout,要么将RecyclerView放入您加载到的FrameLayout中{{1}}。