El método setDrawerListener está en desuso

226

Mientras hago algo en mi aplicación, veo que el cajón de navegación de mi aplicación redujo su tamaño. Pero no estoy haciendo nada al respecto.

cajón de navegación

Luego, después de verificar el código, vi que setDrawerListener está en desuso. ¿Alguien tiene una solución para esto?

drawerLayout.setDrawerListener(actionBarDrawerToggle);
david glorioso
fuente
99
El código en desuso probablemente no tiene nada que ver con el tamaño del cajón. Significa que eliminarán el soporte en el futuro (el método específico). Probablemente se reemplaza con un addDrawerListener, pero no estoy seguro de eso.
CHRYNaN
Ya veo ... pero no puedo ver ningún problema, acabo de crear un nuevo fragmento que no está conectado en ese cajón ... Realmente no puedo entender por qué sucedió eso ...
David glorioso
¿Qué versión de biblioteca estás usando?
Amit Vaghela
Estoy usando esto >> compilar 'com.android.support:appcompat-v7:23.2.0', compilar 'com.android.support:design:23.2.0', compilar 'com.android.support:support-v4 : 23.2.0 '
david glorioso

Respuestas:

751

Usar en su addDrawerListener()lugar.

Luxi Liu
fuente
13
Por qué. Simplemente por qué.
Broak
99
¿Por qué hacen esta basura?
Alex Wohlbruck
77
Por consistencia API. Se añaden removeDrawerListener()por lo que add...debe su nombre para que coincida
Marcin Orlowski
26
¡al menos podrían incluirse use 'addDrawerListener' insteaden mensajes obsoletos!
AaA
1
Entonces ... ¿podemos agregar múltiples oyentes de cajones?
Kenny Worden
84

Reemplazar:

drawer.setDrawerListener(...);

con

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) Establece un oyente para ser notificado de los eventos del cajón.

Tenga en cuenta que este método está en desuso y debe usarlo addDrawerListener(DrawerLayout.DrawerListener)para agregar un escucha y removeDrawerListener(DrawerLayout.DrawerListener)eliminar un escucha registrado.

Jzapata
fuente
18
¿Dónde deberíamos eliminar al oyente del cajón? ¿Es esto necesario?
portfoliobuilder
@portfoliobuilder Depende. En general, no es necesario. Si lo configura onCreate()y gira la pantalla, se recrea toda la actividad y se configura un nuevo oyente. Los casos más complejos deben manejarse con la idea de que (probablemente) no es necesario tener más de 1 oyente configurado DrawerLayout.
Johnny Five
29

Reemplazar setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

con addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

ejemplo

  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);
sivaBE35
fuente
22

Supongo que voy a responder mi pregunta. La última navigationViewproduce su valor predeterminado android:layout_heightcasi 18dpcuando eliges "wrap_content". Por lo tanto, debe elegir lo android:layout_heightque desea para su navigationViewo simplemente hacer 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>

De todos modos, su altura aumenta automáticamente cuando agrega un elemento en el cajón de navegación.

Por último, use en addDrawerListener()lugar de setDrawerListener()como dijo Luxi Liu.

david glorioso
fuente
66
porque esa no es mi pregunta principal. no puedes ver Por favor, lea mi problema antes ... No es solo lo desaprobado,
david glorioso
77
Entonces puede arreglar el título de su pregunta
Sharique Abdullah