es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Haz que la altura del elemento hijo de SwipeRefreshLayout se ajuste al contenido

Tengo una vista desplazable dentro de un SwipeRefreshLayout y quiero que su desplazamiento horizontal se coloque justo debajo de los datos.

Pero según la documentación, el SwipeRefreshLayout solo puede admitir un hijo directo y tanto el ancho como el alto del hijo se ven obligados a coincidir con el elemento principal.

lo que resulta en que la vista siempre coincida con el elemento principal y el desplazamiento horizontal se coloca en la parte inferior del padre.

<android.support.v4.widget.swiperefreshlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swiperefresh" android:layout_width="match_parent" android:layout_height="match_parent">
    <listview android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content"></listview>
</android.support.v4.widget.swiperefreshlayout>

He intentado poner la vista dentro de un LinearLayout como se muestra a continuación y ha hecho que wrap_content funcione correctamente, pero ahora cuando desplazo la vista hacia abajo, se activa el SwipeRefreshLayout en lugar de desplazarse.

<android.support.v4.widget.swiperefreshlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swiperefresh" android:layout_width="match_parent" android:layout_height="match_parent">
    <linearlayout android:layout_width="match_parent" android:layout_height="match_parent">
        <listview android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content"></listview>
    </linearlayout>
</android.support.v4.widget.swiperefreshlayout>

¿Alguna idea sobre cómo hacer que la altura de la vista secundaria se ajuste al contenido sin romper el desplazamiento?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no es posible hacer que la altura de la vista secundaria envuelva el contenido mientras se utiliza SwipeRefreshLayout sin romper el desplazamiento. Esto se debe a que SwipeRefreshLayout requiere que su vista secundaria directa coincida con la altura de su vista principal, lo que significa que cualquier vista de desplazamiento interna tendrá que ocupar toda la altura de la vista principal también.

    Una solución alternativa sería utilizar una vista personalizada que extienda de SwipeRefreshLayout y anule el método onLayout para ajustar la disposición de la vista secundaria. Sin embargo, esto requeriría una cantidad significativa de código personalizado y puede que no valga la pena el esfuerzo.

    Otra opción sería considerar el uso de un diseño o patrón de diseño diferente que no requiera SwipeRefreshLayout, como una barra de herramientas o una vista de desplazamiento personalizada con su propia funcionalidad de actualización.

Comments are closed.