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.

  • Android - Servicio de inicio en el inicio
  • Construye android release apk en Phonegap 3.x CLI
  • Cómo obtener la temperatura de la CPU en Android
  • Formato de fecha y hora según la configuración regional
  • Servicio de notificación de Google / Apple Push (APNS / GCM)
  • Recibir un error de compilación al actualizar a gradle 3.3 y android build tools 2.3.0
  • 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 evito que otras aplicaciones de Android accedan a mis actividades?
  • Los subtítulos de la barra de herramientas no aparecen
  • Animar la vista de redimensionamiento en el diseño del material
  • Android: AutoCompleteTextView ocultar teclado virtual
  • Android: Force EditText para eliminar el enfoque?
  • Escala Android de imágenes a densidad de pantalla
  • 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.