Attualmente sto sviluppando un'applicazione per tablet che utilizza intensamente il widget ViewPager
. Ho anche avuto più Viewpager sullo schermo in una volta.Arresta Android dal layout di tutte le mie viste
Ora sto riscontrando il seguente problema: Se un ViewPager scorre alla pagina successiva/precedente, (ovviamente) deve ricalcolare il layout e aggiungere/rimuovere le viste. Ho notato che le chiamate requestLayout
vengono visualizzate direttamente nella parte superiore della gerarchia di visualizzazione, invalidando quindi TUTTE le delle mie visualizzazioni sullo schermo del tablet (che sono molte!). Questo è molto costoso.
La mia domanda ora è: esiste una possibilità di implementare una cornice intorno al ViewPager che fa il layout iniziale e poi non propaga le richieste Layout- la vista gerarchia come so che dopo il layout iniziale, il telaio rimane della stessa dimensione e non cambierà.
Mi è venuto in mente il seguente Frame, ma non funziona abbastanza bene, perché non funziona il 100% delle volte.
public class MyFrame extends FrameLayout
{
// VARIABLE CONTROLLING THE DISPATCH OF THE LAYOUT
// REQUEST UP THE VIEW HIERARCHY
private boolean doLayout = true;
public MyFrame(Context context)
{
super(context);
doLayout = true;
}
@Override
public void requestLayout()
{
if (doLayout) // DO THE LAYOUT REQUEST UP TO THE TOP
super.requestLayout();
else
{
// JUST MEASURE MYSELF AND MY CHILDREN
measure(MeasureSpec.getMode(MeasureSpec.AT_MOST),
MeasureSpec.getMode(MeasureSpec.AT_MOST));
layout(getLeft(), getTop(), getRight(), getBottom());
}
doLayout = false;
}
}
Grazie per qualsiasi consiglio!