Ich entwickle derzeit eine Tablet-App, die intensiv das ViewPager
Widget verwendet. Ich habe auch mehrere Viewpager auf dem Bildschirm auf einmal.Stop Android von Layouting alle meine Ansichten
Jetzt habe ich das folgende Problem: Wenn ein ViewPager zur nächsten/vorherigen Seite scrollt, muss er (natürlich) sein Layout neu berechnen und Ansichten hinzufügen/entfernen. Ich bemerkte, dass die requestLayout
Anrufe bis an die Spitze der View-Hierarchie, daher ungültig ALL meiner Ansichten auf dem Tablet-Bildschirm (die eine Menge!) Sind. Dies ist sehr teuer.
jetzt meine Frage: Gibt es eine Möglichkeit, einen Rahmen um die ViewPager zu implementieren, die das ursprüngliche Layout-tun und dann ausbreitet nicht Layout- Anfragen die Ansichtshierarchie nach oben wie ich, dass nach dem ersten Layout kennen, der Rahmen bleibt gleich groß und ändert sich nicht.
Ich kam mit dem folgenden Frame, aber es funktioniert nicht ganz gut, weil es nicht 100% der Zeit funktioniert.
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;
}
}
Vielen Dank für jede Beratung!