Сохранение элементов ViewPager одинаковой максимальной высоты - PullRequest
0 голосов
/ 15 октября 2018

У меня есть ViewPager (в CardView), который пролистывает между 4 различными элементами.Эти страницы имеют относительно одинаковый макет и близкие по высоте (одинаковой ширины), однако есть случаи, когда у одного дочернего элемента есть дополнительные строки текста, которые заметно увеличивают или уменьшают размер карты при просмотре пейджера.

У меня есть фрагмент кода, который я использую, который имеет смысл из моего понимания, он просматривает детей видоискателя и измеряет их высоту, сохраняя самый большой.Затем он возвращает эту максимальную высоту и устанавливает ее для просмотра.В моем случае страницы 1, 2, 3 работают должным образом (различное количество текстового содержимого, но все одинаково отображают высоту), но страница 4 возвращается к меньшему размеру и возвращает различные измерения для дочерних шагов измерения.Есть идеи, почему это так?

public class WrapContentViewPager extends ViewPager {
public WrapContentViewPager(Context context) {
    super(context);
}

public WrapContentViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int height = 0;
    for(int i = 0; i < getChildCount(); i++) {
        View child = getChildAt(i);
        child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        int h = child.getMeasuredHeight();
        if(h > height) height = h;
    }

    if (height != 0) {
        heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
    }

    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}

Спасибо!

...