В настоящее время я разрабатываю планшетное приложение, которое интенсивно использует виджет ViewPager
. Я также сразу получил несколько просмотрщиков на экране.Остановить Android от Layouting all my Views
У меня возникла следующая проблема: Если один ViewPager прокручивается до следующей/предыдущей страницы, он (конечно) должен пересчитать свой макет и добавить/удалить Views. Я заметил, что requestLayout
звонит прямо к верхней части иерархии просмотра, поэтому делает недействительным ВСЕ моих просмотров на экране планшета (которые много!). Это очень дорогостоящее.
Мой вопрос теперь: есть ли возможность реализовать рамку вокруг ViewPager, который делает первоначальный макет, а затем не распространяется layout- запросов, до режима просмотра иерархии, как я знаю, что после первоначального расположения, рамка остается того же размера и не изменится.
Я придумал следующий кадр, но он не работает достаточно хорошо, потому что он не работает в течение 100% времени.
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;
}
}
Спасибо за любой совет!