方法 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 已弃用的主要内容,如果未能解决你的问题,请参考以下文章
OnActivityResult 方法已弃用,有啥替代方法?
如何解决“VisibleDeprecationWarning:zmq.eventloop.minitornado 已弃用”?