2015-03-07 2 views
0

У меня есть настраиваемая панель инструментов, которую я настроил в своей MainActivity, чтобы быть верхней панелью действий. Вопрос в том, как вы реализуете NavigationDrawer для отображения при щелчке ImageView на панели инструментов?Как добавить DrawerLayout в мой ToolBar/ActionBar

В MainActivity

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

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

Мой layout_main_drawer

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    tools:context="com.XXXX" tools:ignore="MergeRootFrame" /> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:minHeight="?attr/actionBarSize" 
    android:background="#ccc"> 
    <ImageView 
     android:id="@+id/toolbar_action" 
     android:src="@drawable/ic_drawer" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_marginRight="50dp"/> 
</android.support.v7.widget.Toolbar> 

ответ

0

Вы можете использовать что-то вроде этого:

Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(mToolbar); 
    DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
     this, mDrawerLayout, mToolbar, 
     R.string.navigation_drawer_open, R.string.navigation_drawer_close 
    ); 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

    mDrawerToggle.syncState(); 

Обратите внимание. android.support.v4.app.ActionBarDrawerToggle устарел.

Вы должны использовать android.support.v7.app.ActionBarDrawerToggle. Этот класс имеет конструктор с Toolbar.

0
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView) findViewById(R.id.left_drawer); 
     mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mDrawerString)); 
     mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { 
      public void onDrawerClosed(View view) { 
       super.onDrawerClosed(view); 
      } 
      public void onDrawerOpened(View drawerView) { 
       super.onDrawerOpened(drawerView); 
      } 
      @Override 
      public void onDrawerSlide(View drawerView, float slideOffset) { 
       super.onDrawerSlide(drawerView, slideOffset); 
       mDrawerLayout.bringChildToFront(drawerView); 
       mDrawerLayout.requestLayout(); 
      } 
     }; 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 
    } 

После этого использования onDrawerOpen() & onDrawerClose() методы! Надеюсь, это поможет.

Не забудьте импортировать:

import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarActivity; 
+0

Создает ли layout_main_drawer DrawerLayout там? – Stephanie

+0

Вы можете использовать в файле XML Надеюсь, что это помогает! –

+0

@AtharvaPuranik вы используете устаревший ActionBarDrawerToggle. –