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.
- Diseño gráfico de eclipse que no muestra nada
- Cómo dibujar un círculo dentro de un círculo con formas de Android xml?
- Cómo colorear el contorno de mi texto negro en xml para android
- Incluir etiqueta y dataBinding
- Lectura de un archivo .xml desde sdcard
Aquí abro DrawerLayout
Luego cierro DrawerLayout.
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>
- Android: DOM vs SAX vs análisis XMLPullParser?
- ¿Cómo funciona android: rotationX y android: rotationY en XML realmente funciona?
- No se puede crear servicio com.parse.PushService: java.lang.NullPointerException
- Disposición de Android: vistas cuadráticas
- Agregar más de una cadena a un TextView
- Elemento xml de la referencia de diseño de Android más adelante en el archivo
- Android: Personajes dejados atrás en EditText
- TabLayout se bloquea después de actualizar la biblioteca de soporte a 23.2.0
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) { } });