Comment déplacer le contenu principal avec Disposition du tiroir côté gauche

Il suffit de vérifier comment faire le menu avec DrawerLayout ici . Mais le menu côté gauche se déplace à l'avant du contenu principal. Comment puis-je le configurer sur le menu et le contenu principal se déplacent côte à côte (le menu appuie le contenu vers la droite)?

  • Impossible d'installer la version de débogage et de sortie sur le même périphérique
  • Passer une exception en tant que parcelle
  • Échec
  • Comment sélectionner la vidéo de la galerie et la recadrer / redimensionner, tout comme la recadrage d'image dans Android
  • Décodez le flux de caméra H264 codé par le périphérique d'Android en utilisant ffmpeg en temps réel
  • ClusterManager repeint les marqueurs de Google Maps v2 utils
  • Comment puis-je configurer l'ombre de vue uniquement sur les côtés pour voir avec élévation
  • Éditeur d'image Android
  • Comment envoyer une intention avec télégramme
  • Une alternative à la vision du web d'Android
  • EventBus, enregistrez-vous et enregistrez-vous
  • Demande HTTP SSL Android utilisant un certificat certifié auto et CA
  • 5 Solutions collect form web for “Comment déplacer le contenu principal avec Disposition du tiroir côté gauche”

    Si vous ne souhaitez pas utiliser de bibliothèques tierces , vous pouvez l'implémenter vous-même simplement surpasser OnDrawerSlide depuis ActionBarDrawerToggle. Là, vous pouvez traduire votre vue framelayout en fonction de l'ouverture% de votre tiroir.

    Exemple avec code:

    <?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> 

    Et ici, annulez surDrawerSlide:

     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 } } 

    Étant donné que setTranslationX n'est pas disponible dans les versions Android pré-nid d'abeille, je l'ai géré en utilisant TranslateAnimation pour les périphériques de version inférieure.

    J'espère que cela aide!

    Vous voudrez peut-être utiliser cette bibliothèque de Toggles de tiroirs que j'ai écrit.

    Je suis sûr que vous trouverez ContentDisplaceDrawerToggle portée de main:

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

    ContentDisplaceDrawerToggle fait exactement ce que vous dites. Il déplace la vue du contenu lorsque vous glissez / sortez le DrawerLayout .

    Exemple d'image

    Si vous souhaitez combiner différentes bascules, vous pouvez utiliser ActionBarToggleWrapper ou DrawerToggleWrapper

    Les options d'utilisation sont données dans le fichier read me.

    Voici le code de travail …

     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 a obtenu la réponse. Mais pour quelqu'un d'autre qui veut cet effet, peut utiliser SlidingPaneLayout . C'est conçu à cet effet.

    Dans le fichier 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 ****************************--> 

    Il y a deux volets, à droite et à gauche, s'accrochent et se déplacent ensemble. Pour moi, le volet gauche est le volet principal et la droite est cachée avec une icône basculante pour l'afficher. (Une vue avec id appBarSearchIcon ).

    Rappelez-vous, il y a un groupe de vues nommé, SlidingPaneLayout qui n'a que deux enfants, The Left and The Right .

    Et une partie importante de l'activité:

      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(); } }); 

    La fermeture du volet droit est effectuée par l'API, tout comme le tiroir de navigation.

    Dans le deuxième ensemble de mise en page

     android:layout_gravity="start" 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.