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

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.

  • Diseño del cajón de navegación el título en la barra de herramientas no cambia
  • ¿Cómo agregar el indicador de "menú" junto al icono de la aplicación de Barra de Acción?
  • Cómo hacer navegación personalizada ver animaciones como ésta
  • SoftInputMode en fragmentos
  • Cómo ocultar el indicador del cajón de navegación mientras utiliza appcompat21
  • Adaptador personalizado para cajón de navegación
  • Cómo cambiar la lista de color del elemento seleccionado en el cajón de navidgation?
  • Cómo deshabilitar la disposición de cajones de un lado?
  • ¿Cómo mostrar el cajón de navegación en todas las actividades?
  • Prueba de interfaz de usuario de Robotium para la aplicación con el cajón de navegación
  • Colorear la barra de estado de Android en Nav Drawer
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.