david glorioso
david glorioso

Reputation: 2567

Method setDrawerListener is deprecated

While I'm doing something on my app, I see that the navigation drawer on my app reduced its size. But I'm not doing anything on that.

navigation drawer

Then, after checking the code, I saw that setDrawerListener is deprecated. Does anyone has a solution to this?

drawerLayout.setDrawerListener(actionBarDrawerToggle);

Upvotes: 230

Views: 86987

Answers (5)

Sajawal Bashir
Sajawal Bashir

Reputation: 51

In Official Android Developer Documentsenter image description here

Upvotes: 0

sivaBE35
sivaBE35

Reputation: 1891

Replace setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

with addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

example

  DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            assert drawer != null;
            drawer.addDrawerListener(toggle);
            toggle.syncState();

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            assert navigationView != null;
            navigationView.setNavigationItemSelectedListener(this);

Upvotes: 30

david glorioso
david glorioso

Reputation: 2567

I guess I'm gonna answer my question. The latest navigationView produces its default android:layout_height at almost 18dp when you choose "wrap_content". So, you must choose the android:layout_height that you want for your navigationView or simply make android:layout_height="match_parent".

<android.support.design.widget.NavigationView
    android:layout_width="320dp"
    android:layout_height="550dp"
    android:id="@+id/navigation_view_admin"
    android:layout_gravity="start">

</android.support.design.widget.NavigationView>

Anyways, it's height automatically increases when you add an item in the navigation drawer.

Lastly, Use addDrawerListener() instead of setDrawerListener() as Luxi Liu said.

Upvotes: 22

Jzapata
Jzapata

Reputation: 2512

Replace:

drawer.setDrawerListener(...);

with

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) Sets a listener to be notified of drawer events.

Note that this method is deprecated and you should use addDrawerListener(DrawerLayout.DrawerListener) to add a listener and removeDrawerListener(DrawerLayout.DrawerListener) to remove a registered listener.

Upvotes: 87

Luxi Liu
Luxi Liu

Reputation: 7968

Use addDrawerListener() instead.

Upvotes: 763

Related Questions