Pregunta

En mi pantalla tengo una vista de lista y un botón. Mi lista tiene como 8 elementos. Me gustaría que mi pantalla se desplazara si ambos elementos no encajan. No quiero que mi lista tenga desplazamiento, sino el diseño completo que incluye la lista y el botón. Si uso el diseño a continuación, solo se muestra en el elemento dentro de la lista y tengo que desplazarme dentro de la lista para ir al siguiente elemento.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent" >
<LinearLayout
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">

        <ListView android:id="@android:id/list"
            android:layout_height="wrap_content" android:layout_width="fill_parent"
            android:background="@drawable/round_background" />

        <Button android:text="Search" android:id="@+id/carSearchButton"
            android:layout_gravity="center_horizontal" android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
¿Fue útil?

Solución 2

Scythe responde a mi pregunta, pero quería más de un control debajo de la lista también en otra pantalla que quería 2 listas. Entonces, para que la barra de desplazamiento funcionara con la vista de lista, tuve que arreglar la altura de la lista.

Otros consejos

No puede colocar una lista de listas dentro de una vista de desplazamiento. De GridView, o cualquier vista que maneja el desplazamiento en el mismo eje que el ScrollView. De esa manera, el marco no sabría qué vista debería manejar el evento de desplazamiento. Este diseño no producirá un error cuando lo compile, pero no funcionará correctamente.

Lo que debe hacer aquí: voltea la vista de desplazamiento externo, no lo necesita. Solo use una vista de lista y agregue el botón a ListView, usando .addfooter (), esa es la forma más fácil. De esta manera, su botón aparecerá como un elemento de lista, pero no tiene que jugar con un adaptador personalizado.

Si su problema es con ListView no desplazándose dentro de ScrollView, aquí está la solución para manejar esto.

Implemente su propia clase ListView Extending ListView e implementa el siguiente método en ella.

 

@Override public boolean onTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: // Disallow ScrollView to intercept touch events. this.getParent().requestDisallowInterceptTouchEvent(true); break; case MotionEvent.ACTION_UP: // Allow ScrollView to intercept touch events. this.getParent().requestDisallowInterceptTouchEvent(false); break; } super.onTouchEvent(ev); return true; }

¿Avísame si esto resuelve tu problema?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top