2015-01-04 4 views
1

Я следовал этим инструкциям StackOverflow post и смог получить ActionBarDrawerToggle и его анимацию. Однако навигационный ящик не выдвигается. Почему это?Конструкция ящика для дизайна материалов не раздвигалась

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/container" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context=".MainActivity" 
tools:ignore="MergeRootFrame" 
android:fitsSystemWindows="true" > 

<include layout="@layout/toolbar" /> 

<it.neokree.materialtabs.MaterialTabHost 
    android:id="@+id/materialTabHost" 
    android:layout_width="match_parent" 
    android:layout_height="48dp" 
    app:textColor="#FFFFFF" 
    app:primaryColor="#33B5E5" 
    app:accentColor="#FFFFFF" /> 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

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

    <!-- Main layout --> 
    <FrameLayout 
     android:id="@+id/main_fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <!-- Nav drawer --> 
    <fragment 
     android:id="@+id/nav_drawer" 
     android:name="com.wsandhu.conjugation.DrawerFragment" 
     android:layout_width="@dimen/drawer_width" 
     android:layout_height="match_parent" 
     android:layout_gravity="left|start" /> 
</android.support.v4.widget.DrawerLayout> 
</LinearLayout> 

Вот код в методе onCreate() в MainActivity.java:

ActionBarDrawerToggle mDrawerToggle; 
DrawerLayout mDrawerLayout; 

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

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.app_name, R.string.app_name); 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

... 

    if (savedInstanceState == null) { 
     new Handler().post(new Runnable() { 
      @Override 
      public void run() { 
       getSupportFragmentManager().beginTransaction() 
         .add(R.id.container, new MainFragment()) 
         .commit(); 
      } 
     }); 
    } 

... 

} 

У меня есть DrawerFragment класс и его файл XML, но, как Я сказал, ничего не выйдет, когда я нажимаю ActionBarDrawerToggle в своем приложении. Переключатель прекрасно анимирует.

Пять методов, которые необходимо переопределить, как указано в другом сообщении, находятся в моем MainActivity после метода onCreate(). Я действительно не знаю, что еще добавить, я не могу понять это.

Заранее спасибо.

ответ

0

Я не понял DrawerLayout, частично из-за jpardogo's ответ.

мне нужно, чтобы установить правильный основного содержимого кадра в файле XML моей деятельности, так что я сделал android.support.v4.widget.DrawerLayout корневой элемент файла, и положил мою деятельность в LinearLayout выше панели навигации fragment элемент. Вот правильный рабочий код:

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

<!-- Main layout --> 
<LinearLayout 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".MainActivity" 
    tools:ignore="MergeRootFrame" 
    android:fitsSystemWindows="true" > 

    <include layout="@layout/toolbar" /> 

    <it.neokree.materialtabs.MaterialTabHost 
     android:id="@+id/materialTabHost" 
     android:layout_width="match_parent" 
     android:layout_height="48dp" 
     app:textColor="#FFFFFF" 
     app:primaryColor="#33B5E5" 
     app:accentColor="#FFFFFF" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</LinearLayout> 

<!-- Nav drawer --> 
<fragment 
    android:id="@+id/nav_drawer" 
    android:name="com.wsandhu.conjugation.DrawerFragment" 
    android:layout_width="@dimen/drawer_width" 
    android:layout_height="match_parent" 
    android:layout_gravity="left|start" /> 

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

Это поможет сравнить это с XML-файлом в исходном сообщении. Надеюсь это поможет.

Смежные вопросы