У меня есть 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);
}
}
Спасибо!