ListView dentro de ScrollView con DrawerLayout

Tengo un diseño con ScrollView que tiene un ListView dentro. Todo funciona bien, pero si abre DrawerLayout, ScrollView se desplazará un poco. Basta con ver estas capturas de pantalla.

Introduzca aquí la descripción de la imagen

Aquí abro DrawerLayout

Introduzca aquí la descripción de la imagen

Luego cierro DrawerLayout. Introduzca aquí la descripción de la imagen

Como puede ver, se desplaza un poco. ¿Cómo arreglar esto? Este es mi xml:

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/menuLayout" android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ProgressBar android:id="@+id/progressWheelBar" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> <TextView android:id="@+id/noDataTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/noData" android:textAppearance="?android:attr/textAppearanceSmall" android:visibility="gone" /> <LinearLayout android:id="@+id/actionBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/transparent" android:orientation="vertical" > <RelativeLayout android:id="@+id/innerActionBarLayout" android:layout_width="match_parent" android:layout_height="55dp" android:background="@color/material_blue_500" > <ImageButton android:id="@+id/menuButton" android:layout_width="36dp" android:layout_height="36dp" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:background="@null" android:src="@drawable/ic_menu_white_24dp" /> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="16dp" android:layout_toRightOf="@+id/menuButton" android:textColor="@color/white" android:textSize="18sp" /> </RelativeLayout> </LinearLayout> <ScrollView android:id="@+id/mainScrollView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/actionBarLayout" android:fillViewport="true" android:scrollbars="none" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <!-- Here goes the frame layout with a listview inside --> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" tools:context="ru.tenet.ttk.MainActivity" /> </LinearLayout> </ScrollView> <RelativeLayout android:layout_width="match_parent" android:layout_height="2dp" android:layout_alignParentLeft="true" android:layout_below="@+id/actionBarLayout" android:background="@drawable/shadow_down" /> </RelativeLayout> <LinearLayout android:layout_width="250dp" android:layout_height="match_parent" android:layout_gravity="left|start" android:background="@color/white" android:orientation="vertical" android:clickable="true" > <ListView android:id="@+id/menuListView" android:layout_width="match_parent" android:layout_height="wrap_content" android:listSelector="@drawable/list_selector" android:layout_marginTop="15dp" android:divider="@null" /> </LinearLayout> </android.support.v4.widget.DrawerLayout> 

Es difícil dar una respuesta definitiva porque no ha publicado su código. Una de las razones podría ser que tienes una configuración de estilo "windowActionBarOverlay = true" en tu actividad. Debido a ese ajuste, el contenido de la actividad comienza justo al principio de la página y se sitúa detrás de ActionBar.

Además, como comentan los comentaristas anteriores, ¿realmente necesita un ListView dentro de ScrollView? ListView es un ScrollView.

Mejor si publicas el código de tu actividad de Gaveta y la actividad de contenido.

La solución simple es usar headerView – ListView.addHeaderView (); Creo que no necesitas usar ScrollView y solo añadir container como headerView

Su mejor opción sería utilizar el RecyclerView y definir un headerRow para mostrar su título.

Asigne un DrawerListener a DrawerLayout y en el evento onDrawerClosed desplácese el scrollView a la parte superior.

 mDrawer.setDrawerListener(new DrawerListener() { @Override public void onDrawerSlide(View view, float v) { } @Override public void onDrawerOpened(View view) { } @Override public void onDrawerClosed(View view) { mScrollView.fullScroll(ScrollView.FOCUS_UP); } @Override public void onDrawerStateChanged(int i) { } }); 
  • Resaltar el elemento seleccionado en ListView en Android
  • Icono de elemento del cajón de navegación que no muestra el color original
  • Widget de conexión de Android facebook: org.json.JSONException
  • ImageView en forma circular a través de xml
  • La imagen no aparece en HTC One M8
  • Recurso de cadena duplicado en strings.xml android
  • Java.lang.IllegalStateException Necesita utilizar un tema Theme.AppCompat (o descendente) con esta actividad
  • No se puede iniciar la actividad ComponentInfo {com.example.countryselect / com.example.countryselect.OfferSelect}
  • Android XML redondeado esquinas recortadas
  • ¿Cómo puedo obtener nodos específicos de XML usando XPath en Java?
  • ¿Hay una manera de cargar arbitrariamente recursos en tiempo de ejecución en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.