Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


ScrollView no se desplaza hasta el final del margen inferior del LinearLayout interno

Tengo problemas con un fragmento que consiste en un ScrollView que contiene un LinearLayout. Estoy tratando de crear un efecto donde el LinearLayout tiene un fondo blanco y parece un trozo de papel en un fondo de color. La forma en que estoy tratando de lograr esto es por tener el ScrollView ocupar el espacio completo del fragmento y luego el LinearLayout dentro tiene android:layout_margin="16dp" para crear el espacio alrededor del "papel".

De esta manera, la barra de desplazamiento de ScrollView aparece en el área de fondo de color, el margen en la parte superior se desplaza junto con el contenido y el margen en la parte inferior sólo se desplaza cuando se llega al final.

  • Cómo obtener un valor aleatorio de una matriz de cadenas en android?
  • Cómo cambiar el color detrás de Android Dialog
  • Android: ¿Cómo puedo imprimir una variable en la consola eclipse?
  • Algunos dispositivos Android tratan el almacenamiento interno como tarjetas SD y almacenamiento externo como EXTSD
  • Android studio adb Error de sintaxis: ")" inesperado
  • Cómo crear un efecto de recuento para un textView en Android
  • Desafortunadamente en esta configuración ScrollView no se desplaza hasta el final y de hecho corta una cantidad muy pequeña del texto en la parte inferior. Sospecho que el ScrollView no está teniendo en cuenta los márgenes de su hijo en su distancia de desplazamiento vertical. Para resolver esto he envuelto el LinearLayout en un FrameLayout que resuelve el problema, pero parece superfluo. Cualquier sugerencia sobre cómo eliminar este recipiente innecesario sería apreciada.

    Nota: la configuración de android:padding="16dp" en ScrollView y la eliminación de los márgenes no tiene el efecto deseado, ya que entonces el relleno aparece en los cuatro bordes continuamente, independientemente de la posición de desplazamiento.

     <?xml version="1.0" encoding="utf-8"?> <ScrollView 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" tools:context=".ArticleFragment" > <!-- This FrameLayout exists purely to force the outer ScrollView to respect the margins of the LinearLayout --> <FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="10dp" android:layout_margin="16dp" android:background="@color/page_background" > <TextView android:id="@+id/article_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:textIsSelectable="true" /> <TextView android:id="@+id/article_content" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textIsSelectable="true" /> </LinearLayout> </FrameLayout> </ScrollView> 

  • ¿Cómo puedo insertar una base de datos SQLite en una aplicación?
  • Cómo eliminar el relleno de Android CheckBox
  • Agregando "divisores de sección" a mi diseño?
  • ¿Cómo enviar parámetros desde un clic de notificación a una actividad?
  • Android: Hacer una vista Web DomStorage persistente después de cerrar la aplicación
  • Versión compatible de Android JobScheduler - alternativa
  • 3 Solutions collect form web for “ScrollView no se desplaza hasta el final del margen inferior del LinearLayout interno”

    Recuerdo haber tenido problemas con el ScrollView alguna manera no llegar al final de su contenido cuando el diseño del contenido tenía un margen superior. Resolví el problema con un pequeño hack, agregando una vista vacía al final del LinearLayout :

     <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context=".ArticleFragment" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="10dp" android:layout_margin="16dp" > <TextView android:id="@+id/article_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:textIsSelectable="true" android:background="@color/page_background" /> <TextView android:id="@+id/article_content" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textIsSelectable="true" android:background="@color/page_background" /> <!-- Add a little space to the end --> <View android:layout_width="fill_parent" android:layout_height="30dp" /> </LinearLayout> </ScrollView> 

    Utilicé una vista vacía similar también en el principio del LinearLayout para evitar márgenes superiores / inferiores completamente.

    EDIT: Acabo de darme cuenta de que también quería que el final del "papel" aparezca al llegar al final de la vista. En ese caso, puede que desee establecer el color de fondo en el TextView s en lugar del diseño en sí. A continuación, asegúrese de que no hay margen entre el título y el artículo (uso de relleno como separación).

    EDIT2: Debo aprender a comprobar cuando se hicieron las preguntas … Bueno, tal vez esto todavía ayuda a alguien. 🙂

    La pregunta es vieja, pero he tenido problemas con ScrollView que se comportó mal al envolver FrameLayout. También no parece considerar los márgenes de las disposiciones contenidas. Puede reemplazar FrameLayout por otro LinearLayout de un solo hijo, que debe medir correctamente. Me gustaría haber eliminado el FrameLayout completamente y simplemente agregó el margen sumado con relleno en el diseño interior:

     <ScrollView 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"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="26dp" android:background="@color/page_background" > <!--...--> 

    Me deshaceré de FrameLayout y haré que LinearLayout el hijo del ScrollView con match_parent como la altura del diseño. Si todavía no funciona, considere la posibilidad de reemplazar el margen inferior por otra View arbitraria con la altura y el fondo deseados como el último elemento en LinearLayout .

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.