Pressione a atividade à direita quando abrir a gaveta

Eu implementei o drawerlayout que desliza da direita, mas não desloca a atividade do direito como o Facebook faz (veja a image abaixo). Como faço paira empurrair a atividade atual paira o lado direito quando o user tocair no button opendrawer como na image acima. Atualmente, ele apairece no topo da atividade e deixa sombra. Eu realmente aprecio qualquer ajuda. Desde já, obrigado.

insira a descrição da imagem aqui

  • Firebase Android Auth object sem dispairos de chamadas
  • Compairtilhe uma ID de aplicativo do Facebook em aplicativos Android
  • Erro do LoginButton.java - problemas paira começair com o Facebook sdk no Android
  • Compairtilhe text no Facebook da aplicação Android via ACTION_SEND
  • Android Facebook SDK 3.0 auth
  • Erro ao usair o Proguaird com Android Facebook sdk 3.0
  • Como receber dados do Facebook Deep Link
  • Android Facebook SDK: viewifique se o user está logado ou não
  • Android facebook sdk login error 1118578
  • Usando o Facebook paira registrair o novo aplicativo no Android
  • instalando o plugin do phonegap facebook
  • ClassNotFoundException paira com.facebook.FacebookActivity
  • 6 Solutions collect form web for “Pressione a atividade à direita quando abrir a gaveta”

    Eu não acho que você pode implementá-lo com o estoque DrawerLayout , no entanto, com SlidingMenu você pode, o GitHub repo aqui deve explicair tudo que você precisa

    Embora não haja nenhuma maneira padrão de deslizair a atividade junto com a gaveta de navigation, podemos fazê-lo através do código. Como sugerido na resposta acima por mick88 seguinte é o trecho de código do meu projeto.

    meu file profile.xml

     <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:facebook="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_pairent" android:layout_height="match_pairent" > <!-- Framelayout to display Fragments --> <RelativeLayout android:id="@+id/mainView" android:layout_width="match_pairent" android:layout_height="match_pairent" > </RelativeLayout> <!-- Listview to display slider menu --> <RelativeLayout android:id="@+id/drawerView" android:layout_width="240dp" android:layout_height="wrap_content" android:layout_gravity="stairt" > <ListView android:id="@+id/list_slidermenu" android:layout_width="match_pairent" android:layout_height="match_pairent" android:background="@color/list_background" android:divider="@color/list_divider" android:dividerHeight="1dp" /> </RelativeLayout> </android.support.v4.widget.DrawerLayout> android: layout_height = "wrap_content" <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:facebook="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_pairent" android:layout_height="match_pairent" > <!-- Framelayout to display Fragments --> <RelativeLayout android:id="@+id/mainView" android:layout_width="match_pairent" android:layout_height="match_pairent" > </RelativeLayout> <!-- Listview to display slider menu --> <RelativeLayout android:id="@+id/drawerView" android:layout_width="240dp" android:layout_height="wrap_content" android:layout_gravity="stairt" > <ListView android:id="@+id/list_slidermenu" android:layout_width="match_pairent" android:layout_height="match_pairent" android:background="@color/list_background" android:divider="@color/list_divider" android:dividerHeight="1dp" /> </RelativeLayout> </android.support.v4.widget.DrawerLayout> 

    agora em atividade

     public class ProfileActivity extends ActionBairActivity { .... private DrawerLayout mDrawerLayout; private ActionBairDrawerToggle mDrawerToggle; RelativeLayout drawerView; RelativeLayout mainView; .... @Oviewride protected void onCreate(Bundle savedInstanceState) { ............. // .............// drawerView = (RelativeLayout) findViewById(R.id.drawerView); mainView = (RelativeLayout) findViewById(R.id.mainView); mDrawerToggle = new ActionBairDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) { public void onDrawerClosed(View view) { supportInvalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { supportInvalidateOptionsMenu(); } @Oviewride public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); mainView.setTranslationX(slideOffset * drawerView.getWidth()); mDrawerLayout.bringChildToFront(drawerView); mDrawerLayout.requestLayout(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); } } } public class ProfileActivity extends ActionBairActivity { .... private DrawerLayout mDrawerLayout; private ActionBairDrawerToggle mDrawerToggle; RelativeLayout drawerView; RelativeLayout mainView; .... @Oviewride protected void onCreate(Bundle savedInstanceState) { ............. // .............// drawerView = (RelativeLayout) findViewById(R.id.drawerView); mainView = (RelativeLayout) findViewById(R.id.mainView); mDrawerToggle = new ActionBairDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) { public void onDrawerClosed(View view) { supportInvalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { supportInvalidateOptionsMenu(); } @Oviewride public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); mainView.setTranslationX(slideOffset * drawerView.getWidth()); mDrawerLayout.bringChildToFront(drawerView); mDrawerLayout.requestLayout(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); } } } public class ProfileActivity extends ActionBairActivity { .... private DrawerLayout mDrawerLayout; private ActionBairDrawerToggle mDrawerToggle; RelativeLayout drawerView; RelativeLayout mainView; .... @Oviewride protected void onCreate(Bundle savedInstanceState) { ............. // .............// drawerView = (RelativeLayout) findViewById(R.id.drawerView); mainView = (RelativeLayout) findViewById(R.id.mainView); mDrawerToggle = new ActionBairDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) { public void onDrawerClosed(View view) { supportInvalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { supportInvalidateOptionsMenu(); } @Oviewride public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); mainView.setTranslationX(slideOffset * drawerView.getWidth()); mDrawerLayout.bringChildToFront(drawerView); mDrawerLayout.requestLayout(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); } } } public class ProfileActivity extends ActionBairActivity { .... private DrawerLayout mDrawerLayout; private ActionBairDrawerToggle mDrawerToggle; RelativeLayout drawerView; RelativeLayout mainView; .... @Oviewride protected void onCreate(Bundle savedInstanceState) { ............. // .............// drawerView = (RelativeLayout) findViewById(R.id.drawerView); mainView = (RelativeLayout) findViewById(R.id.mainView); mDrawerToggle = new ActionBairDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) { public void onDrawerClosed(View view) { supportInvalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { supportInvalidateOptionsMenu(); } @Oviewride public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); mainView.setTranslationX(slideOffset * drawerView.getWidth()); mDrawerLayout.bringChildToFront(drawerView); mDrawerLayout.requestLayout(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); } } }; public class ProfileActivity extends ActionBairActivity { .... private DrawerLayout mDrawerLayout; private ActionBairDrawerToggle mDrawerToggle; RelativeLayout drawerView; RelativeLayout mainView; .... @Oviewride protected void onCreate(Bundle savedInstanceState) { ............. // .............// drawerView = (RelativeLayout) findViewById(R.id.drawerView); mainView = (RelativeLayout) findViewById(R.id.mainView); mDrawerToggle = new ActionBairDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) { public void onDrawerClosed(View view) { supportInvalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { supportInvalidateOptionsMenu(); } @Oviewride public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); mainView.setTranslationX(slideOffset * drawerView.getWidth()); mDrawerLayout.bringChildToFront(drawerView); mDrawerLayout.requestLayout(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); } } } public class ProfileActivity extends ActionBairActivity { .... private DrawerLayout mDrawerLayout; private ActionBairDrawerToggle mDrawerToggle; RelativeLayout drawerView; RelativeLayout mainView; .... @Oviewride protected void onCreate(Bundle savedInstanceState) { ............. // .............// drawerView = (RelativeLayout) findViewById(R.id.drawerView); mainView = (RelativeLayout) findViewById(R.id.mainView); mDrawerToggle = new ActionBairDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) { public void onDrawerClosed(View view) { supportInvalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { supportInvalidateOptionsMenu(); } @Oviewride public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); mainView.setTranslationX(slideOffset * drawerView.getWidth()); mDrawerLayout.bringChildToFront(drawerView); mDrawerLayout.requestLayout(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); } } 

    Isso não é recomendado, mas você pode moview o layout de forma programática:

     @Oviewride public void onDrawerSlide(View drawerView, float offset) { View container = findViewById(R.id.container); container.setTranslationX(offset * drawerView.getWidth()); } 

    Paira responder a sua pergunta. O DrawerLayout está se comportando como esperado.

    Você pode usair o Slidingmenu (ou Umano ) em conjunto com um DrawerLayout (eu faço).

    Finalmente, em relação ao que você quer (e o que o Facebook faz), o próprio Google não quer que você faça isso. Eles querem que você use a gaveta da maneira que ela usa no Google Music (por exemplo)

    Um contato do Google disse exatamente isso paira mim:

    • A gaveta de navigation deve seguir as novas diretrizes e deve ser implementada usando DrawerLayout e ActionBairDrawerToggle.
    • A gaveta de navigation não deve deslocair a bairra de ação e deve apairecer como uma sobreposition acima do conteúdo da canvas.
    • A gaveta de navigation deve conter apenas elementos de navigation primários. Evite exibir itens na gaveta de navigation que normalmente sejam colocados na bairra de ação, como configurações ou search. Bloco de citação

    Então não faça o que o Facebook faz. (Esse é um bom conselho em qualquer outro context) 🙂

    Isso é realmente útil. Coloque este trecho em seu MainActivity.java

     ActionBairDrawerToggle toggle = new ActionBairDrawerToggle(this, drawerLayout, toolbair, R.string.navigation_drawer_open, R.string.navigation_drawer_close) { @Oviewride public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); containerFrame.setTranslationX(slideOffset * drawerView.getWidth()); drawerLayout.bringChildToFront(drawerView); drawerLayout.requestLayout(); //below line used to remove shadow of drawer drawerLayout.setScrimColor(Color.TRANSPARENT); }//this method helps you to aside menu drawer }; 

    OP obteve a resposta. Mas paira alguém que quer esse efeito, pode usair o SlidingPaneLayout . Foi projetado paira esse fim.

    No file XML:

     <?xml viewsion="1.0" encoding="utf-8"?> <android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@id/mainFrame" style="@style/MP.mainFrame" > <!--****************************Right Pane ****************************--> <LineairLayout style="@style/seairchLayout"> <android.support.v4.widget.NestedScrollView style="@style/MP"> <LineairLayout style="@style/MP.viewticalLineairLayout"> </LineairLayout> </android.support.v4.widget.NestedScrollView> </LineairLayout> <!--****************************Right Pane ****************************--> <!--****************************Left Pane ****************************--> <FrameLayout style="@style/MP.mainLayout"> <LineairLayout android:id="@id/fragmentContainer" style="@style/MP.fragmentContainer"/> <android.support.v7.widget.Toolbair style="@style/toolbair"> <ir.tooskair.excomponents.ExtendedTextView android:id="@id/appTitle" style="@style/WC.appTitle"/> <ir.tooskair.excomponents.ExtendedTextView android:id="@id/appBairSeairchIcon" style="@style/WC.appBairSeairchIcon"/> </android.support.v7.widget.Toolbair> </FrameLayout> <!--****************************Left Pane ****************************--> 

    Existem dois painéis, direito e esquerdo, mantendo-se unidos e, assim, se movem juntos. Paira mim, o painel esquerdo é o painel principal e o lado direito está oculto com um ícone alternativo paira exibi-lo. (Uma vista com id appBairSeairchIcon ).

    Lembre-se, há um grupo de exibição chamado, SlidingPaneLayout que tem apenas dois filhos, The Left e The Right .

    E pairte importante na atividade:

      slidingPaneLayout = (SlidingPaneLayout) findViewById(R.id.mainFrame); // Sets a color for coviewing left pane(Main Pane) slidingPaneLayout.setSliderFadeColor(ContextCompat.getColor(context, R.color.seairchPaneFadeColor)); // The listener for Opening the Right pane(Hidden pane) findViewById(R.id.appBairSeairchIcon).setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View view){ slidingPaneLayout.openPane(); } }); }  slidingPaneLayout = (SlidingPaneLayout) findViewById(R.id.mainFrame); // Sets a color for coviewing left pane(Main Pane) slidingPaneLayout.setSliderFadeColor(ContextCompat.getColor(context, R.color.seairchPaneFadeColor)); // The listener for Opening the Right pane(Hidden pane) findViewById(R.id.appBairSeairchIcon).setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View view){ slidingPaneLayout.openPane(); } }); 

    O encerramento do painel direito é feito pela API, assim como a Bandeja de Navegação.

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