|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Problema con ListView y Scroll de la actividad
Buenas!! Estoy comenzando con el mundo de la programación en android y tengo un problema que ni san google me ha podido solucionar, acudo a vuestra experiencia.
Estoy haciendo una aplicación simple pero para simplificar un poco las cosas os pongo un ejemplo con mi problema: Me gustaría mostrar en una pantalla una serie de datos (TextView), una lista en medio, luego otra serie de datos(TextView) que se cargarán de una base de datos. El problema que me encuentro es que si la lista es demasiado grande los datos de abajo se ocultan y no hay posibilidad de verlos y que el scroll se pone en la lista y no en la activity. Si pongo scroll en la activity (Con <ScrollView> al principio y al final) me encuentro con que la lista solo me muestra el primer elemento y no aumenta. Como puedo solucionar el problema? Siento si no me se explicar bien, dejo el código de un ejemplo rápido que he hecho. main_activity.xml Código:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Datos cargados de la base de datos 1" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Datos cargados de la base de datos 2" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Datos cargados de la base de datos 3" /> <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/lstLista"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Datos cargados de la base de datos 4" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Datos cargados de la base de datos 5" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Datos cargados de la base de datos 6" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Datos cargados de la base de datos 7" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/btnAceptar" android:layout_width="match_parent" android:layout_height="wrap_content"/> <Button android:id="@+id/btnCancelar" android:layout_width="match_parent" android:layout_height="wrap_content"/>/> </LinearLayout> </LinearLayout> Código:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lstLista = (ListView)findViewById(R.id.lstLista); String lista[] = new String[20]; for (int i = 0; i < lista.length; i++) lista[i] = new String("Elemento "+i); ArrayAdapter <String> adaptador = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lista); lstLista.setAdapter(adaptador); } } |
|
#2
|
||||
|
||||
No puedes tener un elemento con scroll en un contenedor con scroll en el mismo eje. (Por poder puedes, pero pasa lo que comentas.
¿Estás seguro de que quieres que el usuario no sepa qué se va a mover cuando intente hacer scroll? Yo lo primero que haría sería convertir ese LinearLayout a RelativeLayout; colocar todo el texto de arriba, luego el de abajo y al final al ListView decirle "below=texto de arriba" y "above=texto de abajo". |
#3
|
||||
|
||||
Pero de esa manera podria darse el caso de que la lista no se viera si la pantalla es muy pequeña.
Estoy pensando que podría crear textview en tiempo de ejecucion y meterlos en un linearlayout y asi me olvido de poner una lista. De todas formas me gustaria saber si alguien sabe como crear una lista que tenga dos botones que realicen funciones diferentes para el item seleccionado. Enviado desde mi LT18i usando Tapatalk 2 |
#4
|
||||
|
||||
Si a una row de una lista le añades un botón se dejará de llamar al OnItemClickListener, así que tendrás que asignar OnClickListeners a cada uno de los botones.
¿Puedes colgar una captura de cómo queda ahora mismo ese layout? |
#5
|
||||
|
||||
Así quedaría de la forma que has dicho, ahora puedo hacer scroll y en la lista y se me ve toda la aplicación, el problema es que si por ejemplo giras la pantalla o la pantalla es mas pequeña pasa esto:
https://www.dropbox.com/s/evwn3yuxu2...2018.10.06.png https://www.dropbox.com/s/fm25w5aewy...2018.10.12.png |
![]() |
![]() |
||||||
|