Saltar al contenido

ViewPager dentro de ScrollView no funciona

Nuestros investigadores estrellas agotaron sus provisiones de café, por su búsqueda día y noche por la solución, hasta que Amelia encontró el arreglo en Gitea por lo tanto hoy la comparte aquí.

Solución:

Intente agregar este fragmento de código antes de cargar su viewPager

NestedScrollView scrollView = (NestedScrollView) findViewById (R.id.nest_scrollview);
scrollView.setFillViewport (true);  

Déjame saber si ayudó a solucionar el problema.

Usar android:fillViewport="true" en ScrollView

La respuesta aceptada resultó en que mis fragmentos ahora sean visibles. Sin embargo, me dejó con el problema de que mi NestedScrollView ya no se desplazaría.

Para superar esto, he creado un ViewPager personalizado (basado en este artículo) que calcula su altura de la manera requerida.

Aquí está el código completo para mi CustomViewPager:

package org.example;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;

public class CustomViewPager extends ViewPager 

    public CustomViewPager(@NonNull Context context) 
        super(context);
    

    public CustomViewPager(@NonNull Context context, @Nullable AttributeSet attrs) 
        super(context, attrs);
    

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 

        try 
            int numChildren = getChildCount();
            for (int i = 0; i < numChildren; i++) 
                View child = getChildAt(i);
                if (child != null) 
                    child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
                    int h = child.getMeasuredHeight();
                    heightMeasureSpec = Math.max(heightMeasureSpec, MeasureSpec.makeMeasureSpec(h, MeasureSpec.EXACTLY));
                
            

        
        catch (Exception e) 
            e.printStackTrace();
        

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    

En su diseño xml, simplemente reemplazaría android.support.v4.view.ViewPager con org.example.CustomViewPager.

(También eliminé el nuevo android:fillViewport="true" attribute de mi elemento NestedScrollView, ya que parece que ya no es necesario).

Nos encantaría que puedieras dar difusión a este escrito si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *