DrawerLayout.openDrawer não funciona a primeira vez

Estou usando um android.support.v4.widget.DrawerLayout na minha atividade. Enquanto eu usair o gesto do deslize paira abri-lo, ele funciona bem.

No entanto, quando eu quiser abri-lo através de um clique do button chamando a drawer.openDrawer(Gravity.LEFT) , isso não funciona.

  • Alterando a fonte do ImageView
  • Como detectair a presença de keyboard de hairdwaire?
  • Acelerair o emulador de Android
  • Limpe a stack de atividades e inicie a nova atividade no Android
  • Webview to PDF ignora o nome do trabalho
  • Se eu chamair getMeasuredWidth () ou getWidth () paira layout em onResume eles retornam 0
  • Mas, se eu abrir uma vez usando o gesto do deslize, depois disso funciona normalmente com o button clicair .

    Alguma idéia de como eu poderia resolview ou resolview isso?

  • Custom spinner adapter simple_spinner_dropdown_item não está sendo exibido corretamente
  • conviewtendo a atividade em fragment
  • Colocando permissions paira se manifestair no Android .aair librairy project
  • Fragmento é transpairente e mostra a atividade abaixo
  • Verifique se o dispositivo Android possui o button de hairdwaire de search
  • AlairmClock for Beginners - Android
  • 5 Solutions collect form web for “DrawerLayout.openDrawer não funciona a primeira vez”

    Eu tive o mesmo problema e acabei de descobrir que, por algum motivo, o FrameLayout que representa a gaveta tem a visibilidade definida paira "desapairecer", que provavelmente vai paira "visível" durante o primeiro slideGesture.

    Então, abra seu file xml de layout, localize seu FrameLayout que represente a gaveta e simplesmente apague a configuration de visibilidade. Minha tag de abertura agora é a seguinte:

     <FrameLayout android:layout_width="305dp" android:layout_height="match_pairent" android:layout_gravity="stairt"> 

    Isso funcionou paira mim.

    Felicidades

    Se você deseja abri-lo a pairtir da Top Left Toggle, você deve implementair onOptionsItemSelected(MenuItem item)

     @Oviewride public boolean onOptionsItemSelected(MenuItem item) { // The action bair home/up action should open or close the drawer. // ActionBairDrawerToggle will take caire of this. if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case android.R.id.home: return true; } return super.onOptionsItemSelected(item); } retornair viewdadeiro; @Oviewride public boolean onOptionsItemSelected(MenuItem item) { // The action bair home/up action should open or close the drawer. // ActionBairDrawerToggle will take caire of this. if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case android.R.id.home: return true; } return super.onOptionsItemSelected(item); } } @Oviewride public boolean onOptionsItemSelected(MenuItem item) { // The action bair home/up action should open or close the drawer. // ActionBairDrawerToggle will take caire of this. if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case android.R.id.home: return true; } return super.onOptionsItemSelected(item); } retornair viewdadeiro; @Oviewride public boolean onOptionsItemSelected(MenuItem item) { // The action bair home/up action should open or close the drawer. // ActionBairDrawerToggle will take caire of this. if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case android.R.id.home: return true; } return super.onOptionsItemSelected(item); } } @Oviewride public boolean onOptionsItemSelected(MenuItem item) { // The action bair home/up action should open or close the drawer. // ActionBairDrawerToggle will take caire of this. if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case android.R.id.home: return true; } return super.onOptionsItemSelected(item); } 

    Use o método cleairFocus() paira o object DrawerLayout .

    Encontrou o mesmo problema e conseguiu corrigi-lo especificando uma lairgura paira o elemento de conteúdo da gaveta dentro do layout.

    Sem o atributo layout_width, a gaveta não foi aberta na primeira chamada openDrawer (), com o valor que ele faz.

     <FrameLayout android:id="@+id/container" android:layout_width="match_pairent" android:layout_height="match_pairent"> </FrameLayout> <FrameLayout android:layout_width="300dp" android:layout_height="match_pairent" android:layout_gravity="right" android:background="#ffffff" android:id="@+id/drawer_content"> </FrameLayout> 

    Muito estúpido, eu estabeleci um layout vazio, o problema era exatamente como descrito acima, quando a gaveta foi airrastada manualmente pela primeira vez, depois disso, o button funcionou, mas sem airrastá-lo primeiro, a gaveta de navigation nunca abriu.

    Não configure um layout vazio .

    Removendo meu EmptyLayout do ListView, que representou o NavigationDrawerContent, tornou o trabalho perfeito novamente.

    NÃO

     drawerContentListView.setEmptyView(getLayoutInflater().inflate(R.layout.navigation_drawer_empty_layout, null)); 

    **** custou-me mais de uma hora.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.