studio programacion herramientas fundamentos con avanzado aplicaciones android android-navigation

android - programacion - ¿Cómo detectar si el cajón de navegación está abierto?



manual de android en pdf (5)

De la siguiente manera, puede encontrar que el cajón está abierto o cerrado.

public class YourActivity extends AppCompatActivity implements DrawerLayout.DrawerListener { DrawerLayout drawer; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dash_board); final DrawerLayout drawer=(DrawerLayout)findViewById(R.id.container); drawer.setDrawerListener(this); }//onCreate() @Override public void onDrawerOpened(View arg0) { //write your code } @Override public void onDrawerClosed(View arg0) { } @Override public void onDrawerSlide(View arg0, float arg1) { //write your code } @Override public void onDrawerStateChanged(int arg0) { //write your code } }//class

El título lo explica todo. Todo lo que quiero hacer es saber si el cajón de navegación está abierto o no. Busqué mucho en la red y encontré que el método isDrawerOpen(int drawerGravity) pero no pude encontrar una respuesta satisfactoria que explique cómo usarlo en un método. Agradecería si alguien me lo explica.

¡Gracias por adelantado!


La respuesta de shakeJ es la correcta, y recuerda que puedes utilizar el enDrawerSlide para poder disparar otras funciones ... por ejemplo, lo usé para cambiar el Color de StatusBar.

/** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { super.onDrawerClosed(view); isOpen = false; } /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); isOpen = true; } public void onDrawerSlide(View drawerView,float slideOffset){ super.onDrawerSlide(drawerView,slideOffset); if(!isOpen){ setStatusBarColor("#00102b"); } if(isOpen){ setStatusBarColor("#EFEFF0"); } }


Suponiendo que haya definido un drawerlayout en xml:

DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); ... if(mDrawerLayout.isDrawerOpen(GravityCompat.START)) { //drawer is open }


Utilizar:

mDrawerLayout.isDrawerOpen()

Ejemplo:

if(mDrawerLayout.isDrawerOpen(GravityCompat.START)) { mDrawerLayout.closeDrawer(Gravity.LEFT); //CLOSE Nav Drawer! }else{ mDrawerLayout.openDrawer(Gravity.LEFT); //OPEN Nav Drawer! }


mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerToggle = new ActionBarDrawerToggle( this, /* host Activity */ mDrawerLayout, /* DrawerLayout object */ R.drawable.ic_drawer, /* nav drawer icon to replace ''Up'' caret */ R.string.drawer_open, /* "open drawer" description */ R.string.drawer_close /* "close drawer" description */ ) { /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { super.onDrawerClosed(view); getActionBar().setTitle(mTitle); } /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); getActionBar().setTitle(mDrawerTitle); } }; // Set the drawer toggle as the DrawerListener mDrawerLayout.setDrawerListener(mDrawerToggle);

Ese oyente usa :)