Muhammad Akhtar
Muhammad Akhtar

Reputation: 699

Android Navigation Drawer Icon on ActionBar

public class MainActivity extends ActionBarActivity {
    private String[] drawerListItems;
    private ListView drawerListView;
    private DrawerLayout drawerlayout;
    private ActionBarDrawerToggle drawToggle;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);          

        drawerlayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawerListItems = getResources().getStringArray(R.array.DrawreMenue);
        drawerListView = (ListView) findViewById(R.id.slidermenu);
        Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
        //getActionBar().setIcon(R.drawable.ic_launcher);
        drawerListView.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, drawerListItems));
       //drawerListView.setOnItemClickListener(this);
       drawerListView.setOnItemClickListener(new DrawerItemClickListener());

        drawToggle = new ActionBarDrawerToggle(this, drawerlayout,toolbar,  
                R.string.draw_open,  
                R.string.draw_close 
        ) {


            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);

            }    

            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);

            }
        } ;
       getSupportActionBar().setDisplayHomeAsUpEnabled(true);

       getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setIcon(R.drawable.ic_drawer);

        drawerlayout.setDrawerListener(drawToggle);
        drawToggle.syncState();
    }

I am Using this code in Android Studio

minSdkVersion 8

targetSdkVersion 21

It is showing Drawer Icon but on-click it not opening Drawer List and not Closing it when it opened by sliding

Upvotes: 0

Views: 1639

Answers (2)

PsyGik
PsyGik

Reputation: 3675

You need to add two more methods onPostCreate and onConfigurationChanged

mDrawerToggle = new ActionBarDrawerToggle(
                this,                  /* host Activity */
                mDrawerLayout,         /* DrawerLayout object */
                R.drawable.ic_drawer,  /* nav drawer icon to replace 'Up' caret */
                R.string.drawer_open,  /* "open drawer" description */
                R.string.drawer_close  /* "close drawer" description */
                ) {

            /** Called when a drawer has settled in a completely closed state. */
            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                getActionBar().setTitle(mTitle);
            }

            /** Called when a drawer has settled in a completely open state. */
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                getActionBar().setTitle(mDrawerTitle);
            }
        };

        // Set the drawer toggle as the DrawerListener
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

Source

Upvotes: 1

Amit Singh Tomar
Amit Singh Tomar

Reputation: 131

first of all you need to find id of the Button that you want to click to open Drawer then just put code in click listener to open

mDrawerLayout.openDrawer(mDrawer);

and to close drawer put

mDrawerLayout.closeDrawer(mDrawer);

Upvotes: 0

Related Questions