不赞成使用setDrawerListener方法


226

当我在应用程序上做某事时,我发现应用程序上的导航抽屉减小了尺寸。但是我对此没有做任何事情。

导航抽屉

然后,在检查了代码之后,我发现不赞成使用setDrawerListener。有人对此有解决方案吗?

drawerLayout.setDrawerListener(actionBarDrawerToggle);

9
不建议使用的代码可能与抽屉大小无关。这意味着他们将来会删除对此的支持(特定方法)。它可能被addDrawerListener取代了,但是我不确定。
chRyNaN '16

我知道..但是我看不到任何问题,我只是创建了一个未连接到该抽屉的新片段..无法真正理解为什么发生了此事……
david glorioso

您正在使用哪个版本的库?
阿米特·瓦格拉

我正在使用此>>编译'com.android.support:appcompat-v7:23.2.0',编译'com.android.support:design:23.2.0',编译'com.android.support:support-v4 :23.2.0'
大卫·格洛里厄斯

Answers:


751

使用addDrawerListener()代替。


13
为什么。简单地说,为什么。
Broak

9
他们为什么这样做废话
亚历Wohlbruck

7
用于API一致性。他们补充说,removeDrawerListener()因此add...被命名为
与之

26
至少它们可以包含use 'addDrawerListener' instead在已弃用的消息中!
AaA

1
那么...我们可以添加多个抽屉侦听器吗?
肯尼·沃登

84

更换:

drawer.setDrawerListener(...);

drawer.addDrawerListener(...);

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

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


18
我们应该在哪里删除抽屉侦听器,这是否必要?
portfoliobuilder

@portfoliobuilder这取决于。通常,没有必要。如果您将其设置onCreate()并旋转屏幕,则会重新创建整个活动,并设置新的侦听器。处理更复杂的案例时,应考虑到(可能)不需要将多个侦听器设置为DrawerLayout
约翰尼五

29

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

22

我想我要回答我的问题。几乎在您选择时,最新版本都会navigationView产生默认值。因此,您必须选择您想要的或简单地制造。android:layout_height18dp"wrap_content"android:layout_heightnavigationViewandroid: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()像刘鲁西所说的那样。


6
因为那不是我的主要问题。你看不出来吗 请先阅读我的问题...不仅是过时的东西,
大卫glorioso

7
然后可能会解决您的问题的标题
Sharique Abdullah
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.