Empuje la actividad a la derecha cuando el cajón abierto

He implementado tiro de cajón que se desliza desde la derecha, pero no cambia la actividad de la derecha como hace facebook (ver imagen más abajo). ¿Cómo puedo empujar la actividad actual a la derecha cuando el usuario hace tapping en opendrawer botón como en la imagen de arriba.En la actualidad aparece en la parte superior de la actividad y gotas shadow.I realmente apreciar cualquier ayuda. Gracias por adelantado.

Introduzca aquí la descripción de la imagen

6 Solutions collect form web for “Empuje la actividad a la derecha cuando el cajón abierto”

No creo que puedas implementarlo con la acción DrawerLayout , sin embargo con SlidingMenu puedes, el SlidingMenu GitHub aquí debe explicar todo lo que necesitas

Aunque no hay forma predeterminada de deslizar la actividad junto con el cajón de navegación, podemos hacerlo a través del código. Como se sugiere en la respuesta anterior mick88 siguiente es el fragmento de código de mi proyecto.

Mi archivo 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_parent" android:layout_height="match_parent" > <!-- Framelayout to display Fragments --> <RelativeLayout android:id="@+id/mainView" android:layout_width="match_parent" android:layout_height="match_parent" > </RelativeLayout> <!-- Listview to display slider menu --> <RelativeLayout android:id="@+id/drawerView" android:layout_width="240dp" android:layout_height="wrap_content" android:layout_gravity="start" > <ListView android:id="@+id/list_slidermenu" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/list_background" android:divider="@color/list_divider" android:dividerHeight="1dp" /> </RelativeLayout> </android.support.v4.widget.DrawerLayout> 

Ahora en Actividad

 public class ProfileActivity extends ActionBarActivity { .... private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle mDrawerToggle; RelativeLayout drawerView; RelativeLayout mainView; .... @Override protected void onCreate(Bundle savedInstanceState) { ............. // .............// drawerView = (RelativeLayout) findViewById(R.id.drawerView); mainView = (RelativeLayout) findViewById(R.id.mainView); mDrawerToggle = new ActionBarDrawerToggle(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(); } @Override public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); mainView.setTranslationX(slideOffset * drawerView.getWidth()); mDrawerLayout.bringChildToFront(drawerView); mDrawerLayout.requestLayout(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); } } 

Esto no se recomienda, pero puede mover el diseño mediante programación:

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

Para responder tu pregunta. El DrawerLayout se comporta como se esperaba.

Usted puede usar Slidingmenu (o Umano ) junto con un DrawerLayout (yo sí).

Por último, con respecto a lo que quieres (y lo que hace Facebook), Google en sí no quiere que lo haga. Quieren que utilices el cajón de la forma en que lo usan en Google Music (por ejemplo)

Un contacto de Google me dijo exactamente esto:

  • El cajón de navegación debe seguir las nuevas directrices y debe implementarse utilizando DrawerLayout y ActionBarDrawerToggle.
  • El cajón de navegación no debe desplazar la barra de acción y aparecer como una superposición encima del contenido de la pantalla.
  • El cajón de navegación debe contener sólo elementos de navegación primarios. Evite mostrar elementos en el cajón de navegación que normalmente se colocan en la barra de acciones, como Configuración o Búsqueda. Blockquote

Así que no hagas lo que hace Facebook. (Que es un buen consejo en cualquier otro contexto) 🙂

Esto es muy útil. Pon este fragmento en tu MainActivity.java

 ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) { @Override 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 obtuvo la respuesta. Pero para alguien que quiere ese efecto, puede usar SlidingPaneLayout . Está diseñado para este propósito.

En el archivo XML:

 <?xml version="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 ****************************--> <LinearLayout style="@style/searchLayout"> <android.support.v4.widget.NestedScrollView style="@style/MP"> <LinearLayout style="@style/MP.verticalLinearLayout"> </LinearLayout> </android.support.v4.widget.NestedScrollView> </LinearLayout> <!--****************************Right Pane ****************************--> <!--****************************Left Pane ****************************--> <FrameLayout style="@style/MP.mainLayout"> <LinearLayout android:id="@id/fragmentContainer" style="@style/MP.fragmentContainer"/> <android.support.v7.widget.Toolbar style="@style/toolbar"> <ir.tooskar.excomponents.ExtendedTextView android:id="@id/appTitle" style="@style/WC.appTitle"/> <ir.tooskar.excomponents.ExtendedTextView android:id="@id/appBarSearchIcon" style="@style/WC.appBarSearchIcon"/> </android.support.v7.widget.Toolbar> </FrameLayout> <!--****************************Left Pane ****************************--> 

Hay dos paneles, derecho e izquierdo, se pegan juntos y así se mueven juntos. Para mí, el panel izquierdo es el panel principal y el derecho está oculto con un icono de palanca para mostrarlo. (Una vista con id appBarSearchIcon ).

Recuerde, hay un grupo de vista llamado, SlidingPaneLayout que tiene sólo dos hijos, La Izquierda y La Derecha .

Y parte importante en la actividad:

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

Cerrando el panel derecho es hecho por el API, al igual que el cajón de navegación.

  • La mejor manera de implementar un cajón de desplazamiento de navegación
  • Notificación de la divisa en la barra de herramientas en la barra de herramientas - Android
  • Cómo deshabilitar la disposición de cajones de un lado?
  • ¿Cómo personalizar los elementos de menú en NavigationView como GMail App
  • Cajón de navegación con cabeceras / secciones
  • NavigationDrawer con Actividades vs. NavigationDrawer con Fragments
  • Cómo abrir diferentes actividades al hacer clic en los elementos del cajón de navegación?
  • Establecer el icono de NavigationDrawer en el lado derecho mediante el widget de la barra de herramientas de AppCompat-V-21
  • Desactivar la hamburguesa para animar las flechas
  • Icono del menú izquierdo en la barra de acciones de Android
  • Adición de una imagen grande a un cajón de navegación (SlidingMenu libs) - ¿Cómo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.