2015-03-08 2 views
0

Моя конечная цель - создать простой материал, созданный списком todo. Я только на ранних стадиях, но я столкнулся с проблемой, с которой я, похоже, не справился. Когда я добавляю просмотр recycler в основное действие, меню навигации не будет отображаться, когда я прокручиваю слева или когда я попадаю в меню гамбургера. Когда я прокомментирую это, он отлично работает. Кто-нибудь знает, в чем проблема? Я почти уверен, что это что-то простое, но я исследовал его в Интернете и здесь, на StackOverflow, и, похоже, не может найти ответ. Вы все были настолько полезны в прошлом, я надеюсь, что какая-то магия может повториться!Android: меню навигации/гамбургера не открывается после добавления RecyclerView

Я после серии учебника здесь с небольшой поправкой, начиная с видео # 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)); 

} 

(Спасибо за редактирование, я добавил другой метод, а)

+0

В будущем вставьте код в вопрос. Если вы хотите опубликовать ссылки, вы тоже можете это сделать. Но вопрос должен стоять один, так как ваш код, по-видимому, со временем изменится. Несмотря на эти изменения, эти вопросы и ответы необходимо использовать. – CommonsWare

+0

Хорошо, я буду помнить об этом в будущем. Я не знал, как будет работать форматирование при публикации в вопросе, поэтому я решил, что просто отправлю ссылку, поскольку она была там. Оказалось, что код был очень легко отформатирован! Хорошо знать! – Jacob

ответ

0

Прямо сейчас, ваш RecyclerView накладывает LinearLayout (содержащий ваш DrawerLayout) на оси Z. Следовательно, ваш DrawerLayout не получит никаких сенсорных событий, поэтому ваш салфетка без панели не работает. По-видимому, app_bar<include> является Toolbar, где я предполагаю, что ваш гамбургер есть, и это тоже накладывается RecyclerView, поэтому это не работает.

Главный пользовательский интерфейс вашей деятельности идет, где у вас есть FrameLayout. Таким образом, либо замените FrameLayout на RecyclerView, либо поместите RecyclerView в FrameLayout, или положите RecyclerView во фрагмент, который вы загрузите в это FrameLayout.

+0

Я заменил FrameLayout на RecyclerView, и он отлично работает. Благодаря! – Jacob