martes, 24 de enero de 2012

ScrollView solo permite un elemento dentro. java.lang.IllegalStateException: ScrollView can host only one direct child

Según vemos en la API de Android aquí el componente ScrollView solamente permite un hijo detro de él. De ese modo, si intentamos meter un texto y un botón dentro de un componente ScrollView, este nos da un pete del tipo java.lang.IllegalStateException: ScrollView can host only one direct child
 Por lo tanto, no tenéis que usar lo siguiente:

<?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"
       android:padding="10dip">
       <TextView
           android:id="@+id/about_content"
           android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:text="@string/about_text" />
       <TextView
           android:id="@+id/more_about_content"
           android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:text="@string/about_text" />
 </ScrollView>

Con este me pasé algo más de una tarde, pero es lo que tiene empezar con algo.
LIBRO RECOMENDADO PARA APRENDER ANDROID

Uno de los libros fundamientales y que recomiendo para aprender Android y llegar a hacer aplicaciones profesionales es: Android 2 Application Developement de Reto Meier



6 comentarios :

  1. No se si ya habrás dado con la tecla pero como no lo comentas en el post te indico como poder poner más de un elemento dentro de un ScrollView, o al menos como lo hago yo.

    Dentro del ScrollView pones un Layout (LinearLayout, RelativeLayout, etc.) y en este Layout puedes añadir todo lo que quieras.

    PD: No intentes reinventar la rueda.

    Un anónimo en el anonimato.

    ResponderEliminar
    Respuestas
    1. Muchas gracias tio. Eso es lo que había visto e iba probarlo esta tarde. Creo que me falta como subir arriba del Scroll los botones si no hay texto introducido.

      Muchas gracias por el consejo, intento no reinventar la rueda, solo aprender e ir anotando en el blog lo que voy aprendiendo. ;-)

      Y muchas gracias de nuevo.
      Un abrazo!

      PD: Algún día saldrás del anonimato??

      Eliminar
    2. Este comentario ha sido eliminado por el autor.

      Eliminar
    3. Si ya te has puesto a resolverlo ya habrás dado con la tecla, y sino te has puesto pues no, pero pongo de todas formas como yo lo haría.

      Si sabes de antemano que el texto del TextView va vacío poner el atributo "visibility" a "gone" (en el TextView dentro del .xml "android:visibility="gone""). Cuando dinámicamente se le añada un texto cambiarlo a "visible" (en el activity "mTextView.setVisibility(View.VISIBLE)").

      Y con cualquier otra opción, que modifique el texto del TextView dinámicamente, habrá que comprobar dinámicamente si el texto queda vacío o no y actuar en consecuencia.

      Un anónimo en el anonimato.

      PD: No veo razón para salir del economato.
      PD2: He borrado el anterior comentario por un error.

      Eliminar
    4. Al final no he tenido que usar ScrollView, lo he podido implementar con un linear layout. Postearé como llevo la interfaz a lo largo del día!
      Pero ante todo, muchas gracias siempre.

      PD:me parece bien!

      Eliminar