方法setDrawerListener已弃用

时间:2016-02-25 22:14:29

标签: android drawerlayout deprecation-warning

当我在我的应用上做某事时,我看到我的应用上的导航抽屉减小了它的大小。但是我没有做任何事情。

navigation drawer

然后,在检查代码后,我看到不推荐使用setDrawerListener。有人有解决方案吗?任何帮助都可以。提前谢谢!

drawerLayout.setDrawerListener(actionBarDrawerToggle);

4 个答案:

答案 0 :(得分:719)

改为使用addDrawerListener()

答案 1 :(得分:80)

替换:

drawer.setDrawerListener(...);

drawer.addDrawerListener(...);
  

public void setDrawerListener(DrawerLayout.DrawerListener listener)设置一个侦听器以通知抽屉事件。

     

请注意,此方法已弃用,您应使用addDrawerListener(DrawerLayout.DrawerListener)添加侦听器,并使用removeDrawerListener(DrawerLayout.DrawerListener)删除已注册的侦听器。

答案 2 :(得分:26)

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

答案 3 :(得分:21)

我想我会回答我的问题。当您选择navigationView时,最新的android:layout_height会产生几乎18dp的默认"wrap_content"。因此,您必须为android:layout_height选择所需的navigationView,或者只需制作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()代替setDrawerListener(),正如鲁西刘所说。