Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo mover el contenido principal con el lado izquierdo del diseño de cajones

Acaba de comprobar cómo hacer menú con DrawerLayout aquí . Pero el menú del lado izquierdo se mueve en la parte delantera del contenido principal. ¿Cómo puedo configurarlo para que el menú y el contenido principal se muevan uno al lado del otro (el menú empuja el contenido a la derecha)?

  • Inicializar el objeto TextToSpeech en un subproceso de trabajo
  • Error de autenticación Wifi en Android
  • Touch feedback con RecyclerView y CardView
  • Android 5.0 Lollipop - Reinicio de Nexus 10 y depuración USB no detectada?
  • Buscando una explicación de post / pre / set Traducir (en el objeto Matrix) y cómo usarlos
  • Android - PreferenceActivity - Cambiar el color del texto de resumen de CheckBoxPreference
  • ¿Cuándo se llama a getApplicationContext () de la clase Application?
  • Eliminar la barra de título de la aplicación android
  • Error de configuración de Sandbox en la aplicación de Android en un ID de Gmail concreto
  • Instalación de Android Studio, no apunta a un error de instalación de JVM válido
  • WRAP_CONTENT no funciona después de agregar vistas dinámicamente
  • Android: TextView: elimina el espaciado y el relleno en la parte superior e inferior
  • 5 Solutions collect form web for “Cómo mover el contenido principal con el lado izquierdo del diseño de cajones”

    Si no desea utilizar bibliotecas de terceros , puede implementar usted mismo simplemente sobreescribir el onDrawerSlide de ActionBarDrawerToggle. Allí puedes traducir tu opinión de framelayout basada en el% de apertura de tu cajón.

    Ejemplo con código:

    <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent"/> <ListView android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp"/> </android.support.v4.widget.DrawerLayout> 

    Y aquí, sobreescribir onDrawerSlide:

     public class ConfigurerActivity extends ActionBarActivity { private DrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; private FrameLayout frame; private float lastTranslate = 0.0f; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); frame = (FrameLayout) findViewById(R.id.content_frame); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.acc_drawer_open, R.string.acc_drawer_close) { @SuppressLint("NewApi") public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); float moveFactor = (mDrawerList.getWidth() * slideOffset); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { frame.setTranslationX(moveFactor); } else { TranslateAnimation anim = new TranslateAnimation(lastTranslate, moveFactor, 0.0f, 0.0f); anim.setDuration(0); anim.setFillAfter(true); frame.startAnimation(anim); lastTranslate = moveFactor; } } }; mDrawerLayout.setDrawerListener(mDrawerToggle); // ... more of your code } } 

    Dado que setTranslationX no está disponible en las versiones pre-honeycomb android, lo he administrado usando TranslateAnimation para dispositivos de versión más baja.

    ¡Espero eso ayude!

    Es posible que desee utilizar esta biblioteca de conmutadores de cajones que escribí.

    Estoy seguro de que encontrará ContentDisplaceDrawerToggle útil:

     ContentDisplaceDrawerToggle mContentDisplaceToggle = new ContentDisplaceDrawerToggle(this, mDrawerLayout, R.id.content_frame); mDrawerLayout.setDrawerListener(mContentDisplaceToggle); 

    ContentDisplaceDrawerToggle hace exactamente lo que está diciendo. Mueve la vista de contenido a medida que desliza hacia dentro / hacia fuera el DrawerLayout .

    Ejemplo de imagen

    Si desea combinar diferentes combinaciones, puede utilizar ActionBarToggleWrapper o DrawerToggleWrapper

    Las opciones de uso se proporcionan en el archivo de lectura.

    Aquí está el código de trabajo …

     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) { @Override public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); mContainerFrame.setTranslationX(slideOffset * drawerView.getWidth()); mDrawerLayout.bringChildToFront(drawerView); mDrawerLayout.requestLayout(); //below line used to remove shadow of drawer mDrawerLayout.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.

    En el segundo conjunto de diseño

     android:layout_gravity="start" 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.