方法 setDrawerListener 已弃用

Posted

技术标签:

【中文标题】方法 setDrawerListener 已弃用【英文标题】:Method setDrawerListener is deprecated 【发布时间】:2016-06-08 22:40:23 【问题描述】:

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

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

drawerLayout.setDrawerListener(actionBarDrawerToggle);

【问题讨论】:

不推荐使用的代码可能与抽屉大小无关。这意味着他们将来会取消对它的支持(具体方法)。它可能被替换为 addDrawerListener 但我不确定。 我明白了.. 但我看不出任何问题,我只是创建了一个未连接到那个抽屉的新片段.. 无法真正理解为什么会发生这种情况...跨度> 你使用的是什么版本的库? 我在用这个 >> 编译 'com.android.support:appcompat-v7:23.2.0' , 编译 'com.android.support:design:23.2.0' , 编译 'com .android.support:support-v4:23.2.0' 【参考方案1】:

请改用addDrawerListener()

【讨论】:

为什么。简单地说,为什么。 他们为什么要这么做 为了 API 的一致性。他们添加了removeDrawerListener(),因此add... 被命名为匹配 至少他们可以将use 'addDrawerListener' instead 包含在已弃用的消息中! 那么...我们可以添加多个抽屉监听器吗?【参考方案2】:

替换:

drawer.setDrawerListener(...);

drawer.addDrawerListener(...);

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

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

【讨论】:

我们应该在哪里移除抽屉监听器,这有必要吗? @portfoliobuilder 这取决于。一般来说,没有必要。如果您在onCreate() 中设置它并旋转屏幕,则会重新创建整个活动并设置新的侦听器。处理更复杂的情况时应考虑到(可能)不需要将超过 1 个侦听器设置为 DrawerLayout【参考方案3】:

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

【讨论】:

【参考方案4】:

我想我会回答我的问题。当您选择"wrap_content" 时,最新的navigationView 会在几乎18dp 生成其默认android:layout_height。因此,您必须为您的navigationView 选择您想要的android:layout_height,或者直接创建android:layout_height="match_parent"

<android.support.design.widget.NavigationView
    android:layout_
    android:layout_
    android:id="@+id/navigation_view_admin"
    android:layout_gravity="start">

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

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

最后,用addDrawerListener() 代替setDrawerListener() 就像刘鲁西说的那样。

【讨论】:

因为这不是我的主要问题。你看不见吗?请先阅读我的问题......这不仅仅是弃用的东西, 那么可能会修正你的问题的标题【参考方案5】:

官方Android开发者文档中

【讨论】:

以上是关于方法 setDrawerListener 已弃用的主要内容,如果未能解决你的问题,请参考以下文章

load() 方法已弃用?

OnActivityResult 方法已弃用,有啥替代方法?

如何解决“VisibleDeprecationWarning:zmq.eventloop.minitornado 已弃用”?

替换 Java Awt 已弃用的方法

如何更改已弃用的 beginSheetForDirectory 方法

已弃用的 NSURLConnection 方法,有替代方法吗?