方法 setDrawerListener 已弃用

Method setDrawerListener is deprecated

当我在我的应用程序上执行某些操作时,我发现我的应用程序上的导航抽屉缩小了大小。但我什么都没做。

然后,在检查代码后,我看到 setDrawerListener 已被弃用。有人对此有解决方案吗?

drawerLayout.setDrawerListener(actionBarDrawerToggle);

改用addDrawerListener()

我想我要回答我的问题了。当您选择 "wrap_content" 时,最新的 navigationView 会在几乎 18dp 时生成其默认值 android:layout_height。因此,您必须为 navigationView 选择您想要的 android:layout_height 或简单地制作 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>

无论如何,当您在导航抽屉中添加项目时,它的高度会自动增加。

最后,用addDrawerListener()代替Luxi Liu说的setDrawerListener()

替换:

drawer.setDrawerListener(...);

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.

替换setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

示例

  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);

官方Android开发者文档